From f73cbe4e7604ae246ec290dcc19170cb25ab8f5f Mon Sep 17 00:00:00 2001 From: MihaZupan Date: Mon, 14 Oct 2019 13:11:07 +0200 Subject: [PATCH] Resize LineOffsets to sufficient Capacity before adding items --- src/Markdig/Helpers/StringLineGroup.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Markdig/Helpers/StringLineGroup.cs b/src/Markdig/Helpers/StringLineGroup.cs index 59fd0264..783cc2c2 100644 --- a/src/Markdig/Helpers/StringLineGroup.cs +++ b/src/Markdig/Helpers/StringLineGroup.cs @@ -130,6 +130,11 @@ namespace Markdig.Helpers return Lines[0]; } + if (lineOffsets != null && lineOffsets.Capacity < lineOffsets.Count + Count) + { + lineOffsets.Capacity = Math.Max(lineOffsets.Count + Count, lineOffsets.Capacity * 2); + } + // Else use a builder var builder = StringBuilderCache.Local(); int previousStartOfLine = 0; @@ -153,9 +158,7 @@ namespace Markdig.Helpers { lineOffsets.Add(new LineOffset(Lines[Count - 1].Position, Lines[Count - 1].Column, Lines[Count - 1].Slice.Start - Lines[Count - 1].Position, previousStartOfLine, builder.Length)); } - var str = builder.ToString(); - builder.Length = 0; - return new StringSlice(str); + return new StringSlice(builder.GetStringAndReset()); } ///