From d0443c6567e1bc5819938fc5c2b3f6ca7ef69486 Mon Sep 17 00:00:00 2001 From: Eliot Jones Date: Tue, 10 Dec 2019 11:31:02 +0000 Subject: [PATCH] make operator token threadsafe #97 --- src/UglyToad.PdfPig/Tokens/OperatorToken.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/UglyToad.PdfPig/Tokens/OperatorToken.cs b/src/UglyToad.PdfPig/Tokens/OperatorToken.cs index 15950575..889605a1 100644 --- a/src/UglyToad.PdfPig/Tokens/OperatorToken.cs +++ b/src/UglyToad.PdfPig/Tokens/OperatorToken.cs @@ -4,6 +4,7 @@ internal class OperatorToken : IDataToken { + private static readonly object Lock = new object(); private static readonly Dictionary PooledNames = new Dictionary(); public static readonly OperatorToken R = new OperatorToken("R"); @@ -24,10 +25,15 @@ private OperatorToken(string data) { - if (!PooledNames.TryGetValue(data, out var stored)) + string stored; + + lock (Lock) { - stored = data; - PooledNames[data] = stored; + if (!PooledNames.TryGetValue(data, out stored)) + { + stored = data; + PooledNames[data] = stored; + } } Data = stored;