diff --git a/src/Umbraco.Core/Manifest/ManifestParser.cs b/src/Umbraco.Core/Manifest/ManifestParser.cs index bb57e6dc6f..e30d188339 100644 --- a/src/Umbraco.Core/Manifest/ManifestParser.cs +++ b/src/Umbraco.Core/Manifest/ManifestParser.cs @@ -141,12 +141,17 @@ namespace Umbraco.Core.Manifest { var result = new List(); foreach (var m in manifestFileContents) - { - // Strip byte object marker, JSON.NET does not like it + { var manifestContent = m; - var preAmble = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble()); - if (manifestContent.StartsWith(preAmble)) - manifestContent = manifestContent.Remove(0, preAmble.Length); + + if (manifestContent.IsNullOrWhiteSpace()) continue; + + // Strip byte object marker, JSON.NET does not like it + var preamble = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble()); + + // Strangely StartsWith(preamble) would always return true + if (manifestContent.Substring(0, 1) == preamble) + manifestContent = manifestContent.Remove(0, preamble.Length); if (manifestContent.IsNullOrWhiteSpace()) continue; diff --git a/src/Umbraco.Tests/Manifest/ManifestParserTests.cs b/src/Umbraco.Tests/Manifest/ManifestParserTests.cs index 652f14d9e1..4dc31e8474 100644 --- a/src/Umbraco.Tests/Manifest/ManifestParserTests.cs +++ b/src/Umbraco.Tests/Manifest/ManifestParserTests.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Linq; +using System.Text; using NUnit.Framework; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -460,13 +461,15 @@ javascript: ['~/test.js',/*** some note about stuff asd09823-4**09234*/ '~/test2 var content2 = "{javascript: []}"; var content3 = "{javascript: ['~/test.js', '~/test2.js']}"; var content4 = "{propertyEditors: [], javascript: ['~/test.js', '~/test2.js']}"; + var content5 = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble()) + "{propertyEditors: [], javascript: ['~/test.js', '~/test2.js']}"; - var result = ManifestParser.CreateManifests(null, content1, content2, content3, content4); + var result = ManifestParser.CreateManifests(null, content1, content2, content3, content4, content5); - Assert.AreEqual(4, result.Count()); + Assert.AreEqual(5, result.Count()); Assert.AreEqual(0, result.ElementAt(1).JavaScriptInitialize.Count); Assert.AreEqual(2, result.ElementAt(2).JavaScriptInitialize.Count); Assert.AreEqual(2, result.ElementAt(3).JavaScriptInitialize.Count); + Assert.AreEqual(2, result.ElementAt(4).JavaScriptInitialize.Count); } [Test]