Browse Source

[Text] [Bidi] do not create collections if not need them

pull/9952/head
Sergey Mikolaitis 4 years ago
parent
commit
97f2a26941
  1. 7
      src/Avalonia.Base/Media/TextFormatting/Unicode/BiDiAlgorithm.cs

7
src/Avalonia.Base/Media/TextFormatting/Unicode/BiDiAlgorithm.cs

@ -119,7 +119,7 @@ namespace Avalonia.Media.TextFormatting.Unicode
/// <summary>
/// A stack of pending isolate openings used by FindIsolatePairs()
/// </summary>
private readonly Stack<int> _pendingIsolateOpenings = new Stack<int>();
private Stack<int>? _pendingIsolateOpenings;
/// <summary>
/// The level of the isolating run currently being processed
@ -359,7 +359,7 @@ namespace Avalonia.Media.TextFormatting.Unicode
_hasIsolates = false;
// BD9...
_pendingIsolateOpenings.Clear();
_pendingIsolateOpenings?.Clear();
for (var i = 0; i < _originalClasses.Length; i++)
{
@ -371,13 +371,14 @@ namespace Avalonia.Media.TextFormatting.Unicode
case BidiClass.RightToLeftIsolate:
case BidiClass.FirstStrongIsolate:
{
_pendingIsolateOpenings ??= new Stack<int>();
_pendingIsolateOpenings.Push(i);
_hasIsolates = true;
break;
}
case BidiClass.PopDirectionalIsolate:
{
if (_pendingIsolateOpenings.Count > 0)
if (_pendingIsolateOpenings?.Count > 0)
{
_isolatePairs ??= new BidiDictionary<int, int>();
_isolatePairs.Add(_pendingIsolateOpenings.Pop(), i);

Loading…
Cancel
Save