From 34c49a22283fdb9dbbaef840d0b57a180723358c Mon Sep 17 00:00:00 2001 From: Oliver Booth Date: Sat, 1 Apr 2023 22:31:54 +0100 Subject: [PATCH] fix: fix bug introduced by d29663f081f9545210aa9679b462836e4fae4745 Since value is a ref returned value, mutating it before returning was actually intended behaviour, since the reassignment causes the dictionary value to be mutated too. Also, what game was this ref watching?! --- X10D/src/Collections/DictionaryExtensions.cs | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/X10D/src/Collections/DictionaryExtensions.cs b/X10D/src/Collections/DictionaryExtensions.cs index f4e2158..493088b 100644 --- a/X10D/src/Collections/DictionaryExtensions.cs +++ b/X10D/src/Collections/DictionaryExtensions.cs @@ -54,16 +54,7 @@ public static class DictionaryExtensions #if NET6_0_OR_GREATER ref var value = ref CollectionsMarshal.GetValueRefOrAddDefault(dictionary, key, out bool exists); - if (exists) - { - value = updateValueFactory(key, value!); - } - else - { - value = addValue; - } - - return value; + return value = exists ? updateValueFactory(key, value!) : addValue; #else if (dictionary.TryGetValue(key, out TValue? old)) { @@ -182,7 +173,7 @@ public static class DictionaryExtensions #if NET6_0_OR_GREATER ref TValue? value = ref CollectionsMarshal.GetValueRefOrAddDefault(dictionary, key, out bool exists); - return exists ? updateValueFactory(key, value!) : addValueFactory(key); + return value = exists ? updateValueFactory(key, value!) : addValueFactory(key); #else if (dictionary.TryGetValue(key, out TValue? old)) { @@ -319,7 +310,7 @@ public static class DictionaryExtensions #if NET6_0_OR_GREATER ref TValue? value = ref CollectionsMarshal.GetValueRefOrAddDefault(dictionary, key, out bool exists); - return exists ? updateValueFactory(key, value!, factoryArgument) : addValueFactory(key, factoryArgument); + return value = exists ? updateValueFactory(key, value!, factoryArgument) : addValueFactory(key, factoryArgument); #else if (dictionary.TryGetValue(key, out TValue? old)) {