diff --git a/Src/Newtonsoft.Json.Tests/Linq/MergeTests.cs b/Src/Newtonsoft.Json.Tests/Linq/MergeTests.cs index 6c86b8a3..0a4c7331 100644 --- a/Src/Newtonsoft.Json.Tests/Linq/MergeTests.cs +++ b/Src/Newtonsoft.Json.Tests/Linq/MergeTests.cs @@ -46,6 +46,14 @@ namespace Newtonsoft.Json.Tests.Linq [TestFixture] public class MergeTests : TestFixtureBase { + [Test] + public void MergeSelf() + { + var a = new JArray { "1", "2" }; + a.Merge(a, new JsonMergeSettings { MergeArrayHandling = MergeArrayHandling.Replace }); + Assert.AreEqual(a, new JArray { "1", "2" }); + } + [Test] public void MergeNullString() { diff --git a/Src/Newtonsoft.Json/Linq/JContainer.cs b/Src/Newtonsoft.Json/Linq/JContainer.cs index f1d8ed09..3e1a6449 100644 --- a/Src/Newtonsoft.Json/Linq/JContainer.cs +++ b/Src/Newtonsoft.Json/Linq/JContainer.cs @@ -1164,6 +1164,8 @@ namespace Newtonsoft.Json.Linq #endif break; case MergeArrayHandling.Replace: + if (target == content) + break; target.ClearItems(); foreach (JToken item in content) {