Skip to content

Commit d52ff49

Browse files
author
Wayfarer
committed
small touchups in UnmanagedMap dispose guards are missing
1 parent d5858a9 commit d52ff49

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

ExtendedSystemObjects/UnmanagedMap.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,11 @@ public UnmanagedMap(int capacityPowerOf2 = 8)
102102
/// </value>
103103
public int Capacity { get; private set; }
104104

105+
/// <summary>
106+
/// The disposed
107+
/// </summary>
108+
private bool _disposed;
109+
105110
/// <summary>
106111
/// Gets the keys.
107112
/// </summary>
@@ -163,8 +168,10 @@ private List<TValue> GetValuesSnapshot()
163168
/// </summary>
164169
public void Dispose()
165170
{
171+
if (_disposed) return;
166172
Free();
167173
GC.SuppressFinalize(this);
174+
_disposed = true;
168175
}
169176

170177
/// <summary>
@@ -198,7 +205,7 @@ public void Set(int key, TValue value)
198205

199206
for (var i = 0; i < Capacity; i++)
200207
{
201-
// Triangular probing: offset = i*(i+1)/2
208+
// linear probing
202209
var idx = (hashIndex + i) & mask;
203210

204211
ref var slot = ref _entries[idx];
@@ -320,7 +327,7 @@ private int FindIndex(int key)
320327

321328
for (var i = 0; i < Capacity; i++)
322329
{
323-
// Triangular probing: offset = i*(i+1)/2
330+
// linear probing
324331
var idx = (startIndex + i) & mask;
325332

326333
ref var slot = ref _entries[idx];
@@ -419,7 +426,7 @@ private void InsertRaw(int key, TValue value)
419426

420427
for (var i = 0; i < Capacity; i++)
421428
{
422-
// Triangular probing: offset = i*(i+1)/2
429+
// linear probing
423430
var idx = (hashIndex + i) & mask;
424431

425432
if (_entries[idx].used == SharedResources.Empty)
@@ -432,6 +439,8 @@ private void InsertRaw(int key, TValue value)
432439
return;
433440
}
434441
}
442+
443+
throw new InvalidOperationException("InsertRaw failed during rehash.");
435444
}
436445

437446
/// <summary>

0 commit comments

Comments
 (0)