@@ -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