diff --git a/Src/Newtonsoft.Json.Tests/DemoTests.cs b/Src/Newtonsoft.Json.Tests/DemoTests.cs index d0b6cd57..2214bd8d 100644 --- a/Src/Newtonsoft.Json.Tests/DemoTests.cs +++ b/Src/Newtonsoft.Json.Tests/DemoTests.cs @@ -609,23 +609,25 @@ namespace Newtonsoft.Json.Tests Assert.AreEqual(4, value.Count); } - - public class JsonArrayPool : IArrayPool - { - public static readonly JsonArrayPool Instance = new JsonArrayPool(); - - public char[] Rent(int minimumLength) - { - // use System.Buffers shared pool - return ArrayPool.Shared.Rent(minimumLength); - } - - public void Return(char[] array) - { - // use System.Buffers shared pool - ArrayPool.Shared.Return(array); - } - } #endif } + +#if !(NET20 || NET35 || NET40 || NETFX_CORE || PORTABLE || PORTABLE40 || DNXCORE50) + public class JsonArrayPool : IArrayPool + { + public static readonly JsonArrayPool Instance = new JsonArrayPool(); + + public char[] Rent(int minimumLength) + { + // use System.Buffers shared pool + return ArrayPool.Shared.Rent(minimumLength); + } + + public void Return(char[] array) + { + // use System.Buffers shared pool + ArrayPool.Shared.Return(array); + } + } +#endif } \ No newline at end of file diff --git a/Src/Newtonsoft.Json.Tests/JsonTextWriterTest.cs b/Src/Newtonsoft.Json.Tests/JsonTextWriterTest.cs index 6caadd73..fe76b379 100644 --- a/Src/Newtonsoft.Json.Tests/JsonTextWriterTest.cs +++ b/Src/Newtonsoft.Json.Tests/JsonTextWriterTest.cs @@ -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", "

Title!

" + Environment.NewLine + new string(' ', 100) + "

Content!

"} + }; + + 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"": ""

Title!

\r\n

Content!

"" +}", result); + } +#endif + [Test] public void NewLine() { diff --git a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.project.json b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.project.json index b13cce53..51db2f8c 100644 --- a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.project.json +++ b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.project.json @@ -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": { diff --git a/Src/Newtonsoft.Json.Tests/project.json b/Src/Newtonsoft.Json.Tests/project.json index 6bb0ab8a..5c105e65 100644 --- a/Src/Newtonsoft.Json.Tests/project.json +++ b/Src/Newtonsoft.Json.Tests/project.json @@ -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": { diff --git a/Src/Newtonsoft.Json/MemberSerialization.cs b/Src/Newtonsoft.Json/MemberSerialization.cs index bb68cd50..83099929 100644 --- a/Src/Newtonsoft.Json/MemberSerialization.cs +++ b/Src/Newtonsoft.Json/MemberSerialization.cs @@ -42,7 +42,7 @@ namespace Newtonsoft.Json OptOut = 0, /// - /// Only members must be marked with or are serialized. + /// Only members marked with or are serialized. /// This member serialization mode can also be set by marking the class with . /// OptIn = 1, @@ -55,4 +55,4 @@ namespace Newtonsoft.Json Fields = 2 #pragma warning restore 1584,1711,1572,1581,1580,1574 } -} \ No newline at end of file +} diff --git a/Src/Newtonsoft.Json/Utilities/JavaScriptUtils.cs b/Src/Newtonsoft.Json/Utilities/JavaScriptUtils.cs index 4fe8b051..e8ef53e7 100644 --- a/Src/Newtonsoft.Json/Utilities/JavaScriptUtils.cs +++ b/Src/Newtonsoft.Json/Utilities/JavaScriptUtils.cs @@ -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);