From 910c349f7c04541c609e3fb425a2b14ac792bfea Mon Sep 17 00:00:00 2001 From: Stephan Date: Wed, 20 May 2015 16:59:34 +0200 Subject: [PATCH] Bugfix StyleSheet concatenation causing LOH GC issues --- .../businesslogic/web/StyleSheet.cs | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/umbraco.cms/businesslogic/web/StyleSheet.cs b/src/umbraco.cms/businesslogic/web/StyleSheet.cs index 293dc32eaa..68999beef9 100644 --- a/src/umbraco.cms/businesslogic/web/StyleSheet.cs +++ b/src/umbraco.cms/businesslogic/web/StyleSheet.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.IO; using System.Linq; +using System.Text; using System.Text.RegularExpressions; using System.Xml; using Umbraco.Core.Cache; @@ -121,27 +122,29 @@ namespace umbraco.cms.businesslogic.web using (var re = File.OpenText(IOHelper.MapPath(String.Format("{0}/{1}.css", SystemDirectories.Css, this.Text)))) { - string input = null; - _content = string.Empty; // NH: Updates the reader to support properties var readingProperties = false; + // stop concatenating strings, use string builders! + var contentBuilder = new StringBuilder(); + var propertiesBuilder = new StringBuilder(); - while ((input = re.ReadLine()) != null && true) + string input; + while ((input = re.ReadLine()) != null) { if (input.Contains("EDITOR PROPERTIES")) { readingProperties = true; } else - if (readingProperties) - { - propertiesContent += input.Replace("\n", "") + "\n"; - } - else - { - _content += input.Replace("\n", "") + "\n"; - } + { + var builder = readingProperties ? propertiesBuilder : contentBuilder; + builder.Append(input.Replace("\n", "")); + builder.Append("\n"); + } } + + _content = contentBuilder.ToString(); + propertiesContent = propertiesBuilder.ToString(); } // update properties