This commit is contained in:
James Newton-King
2016-03-14 21:28:16 +13:00
6 changed files with 52 additions and 22 deletions
+19 -17
View File
@@ -609,23 +609,25 @@ namespace Newtonsoft.Json.Tests
Assert.AreEqual(4, value.Count);
}
public class JsonArrayPool : IArrayPool<char>
{
public static readonly JsonArrayPool Instance = new JsonArrayPool();
public char[] Rent(int minimumLength)
{
// use System.Buffers shared pool
return ArrayPool<char>.Shared.Rent(minimumLength);
}
public void Return(char[] array)
{
// use System.Buffers shared pool
ArrayPool<char>.Shared.Return(array);
}
}
#endif
}
#if !(NET20 || NET35 || NET40 || NETFX_CORE || PORTABLE || PORTABLE40 || DNXCORE50)
public class JsonArrayPool : IArrayPool<char>
{
public static readonly JsonArrayPool Instance = new JsonArrayPool();
public char[] Rent(int minimumLength)
{
// use System.Buffers shared pool
return ArrayPool<char>.Shared.Rent(minimumLength);
}
public void Return(char[] array)
{
// use System.Buffers shared pool
ArrayPool<char>.Shared.Return(array);
}
}
#endif
}
@@ -49,6 +49,7 @@ using NUnit.Framework;
using Newtonsoft.Json;
using System.IO;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Utilities;
namespace Newtonsoft.Json.Tests
@@ -136,6 +137,33 @@ namespace Newtonsoft.Json.Tests
Assert.AreEqual(1, arrayPool.FreeArrays.Count);
}
#if !(NET20 || NET35 || NET40 || NETFX_CORE || PORTABLE || PORTABLE40 || DNXCORE50)
[Test]
public void BufferErroringWithInvalidSize()
{
JObject o = new JObject
{
{"BodyHtml", "<h3>Title!</h3>" + Environment.NewLine + new string(' ', 100) + "<p>Content!</p>"}
};
JsonArrayPool arrayPool = new JsonArrayPool();
StringWriter sw = new StringWriter();
using (JsonTextWriter writer = new JsonTextWriter(sw))
{
writer.ArrayPool = arrayPool;
o.WriteTo(writer);
}
string result = o.ToString();
Assert.AreEqual(@"{
""BodyHtml"": ""<h3>Title!</h3>\r\n <p>Content!</p>""
}", result);
}
#endif
[Test]
public void NewLine()
{
@@ -3,7 +3,7 @@
"Autofac": "4.0.0-beta7-130",
"FSharp.Core": "4.0.0.1",
"NUnit": "2.6.2",
"System.Buffers": "4.0.0-rc2-23623",
"System.Buffers": "4.0.0-rc2-23826",
"System.Collections.Immutable": "1.1.37"
},
"frameworks": {
+1 -1
View File
@@ -33,7 +33,7 @@
"FSharp.Core": "4.0.0.1",
"NUnit": "2.6.4",
"System.Collections.Immutable": "1.1.37",
"System.Buffers": "4.0.0-rc2-23623"
"System.Buffers": "4.0.0-rc2-23826"
}
},
"net40": {
+2 -2
View File
@@ -42,7 +42,7 @@ namespace Newtonsoft.Json
OptOut = 0,
/// <summary>
/// Only members must be marked with <see cref="JsonPropertyAttribute"/> or <see cref="DataMemberAttribute"/> are serialized.
/// Only members marked with <see cref="JsonPropertyAttribute"/> or <see cref="DataMemberAttribute"/> are serialized.
/// This member serialization mode can also be set by marking the class with <see cref="DataContractAttribute"/>.
/// </summary>
OptIn = 1,
@@ -55,4 +55,4 @@ namespace Newtonsoft.Json
Fields = 2
#pragma warning restore 1584,1711,1572,1581,1580,1574
}
}
}
@@ -286,7 +286,7 @@ namespace Newtonsoft.Json.Utilities
if (writeBuffer == null || writeBuffer.Length < length)
{
writeBuffer = new char[length];
writeBuffer = BufferUtils.EnsureBufferSize(bufferPool, length, writeBuffer);
}
s.CopyTo(lastWritePosition, writeBuffer, 0, length);