File tree Expand file tree Collapse file tree 1 file changed +10
-6
lines changed
source/System/Collections Expand file tree Collapse file tree 1 file changed +10
-6
lines changed Original file line number Diff line number Diff line change @@ -140,12 +140,13 @@ private void Rehash(int newSize)
140
140
//implementation for KeyCollection and ValueCollection copyTo method
141
141
private void CopyToCollection ( Array array , int index , EnumeratorType type )
142
142
{
143
- if ( index < 0 && index > _numberOfBuckets ) throw new IndexOutOfRangeException ( "index" ) ;
143
+ if ( index < 0 || index >= array . Length ) throw new IndexOutOfRangeException ( "index" ) ;
144
+ if ( ( index + Count ) > array . Length ) throw new IndexOutOfRangeException ( "array length" ) ;
144
145
145
- var j = 0 ;
146
+ var j = index ;
146
147
var len = array . Length ;
147
148
148
- for ( var i = index ; i < _numberOfBuckets ; i ++ )
149
+ for ( var i = 0 ; i < _numberOfBuckets ; i ++ )
149
150
{
150
151
for ( var cur = _buckets [ i ] ; cur != null && j < len ; cur = cur . next )
151
152
{
@@ -229,15 +230,18 @@ public object SyncRoot
229
230
/// <param name="index">The zero-based index in array at which copying begins.</param>
230
231
public void CopyTo ( Array array , int index )
231
232
{
232
- if ( index < 0 && index > _buckets . Length ) throw new IndexOutOfRangeException ( "index" ) ;
233
+ if ( index < 0 || index >= array . Length ) throw new IndexOutOfRangeException ( "index" ) ;
234
+ if ( ( index + _count ) > array . Length ) throw new IndexOutOfRangeException ( "array length" ) ;
233
235
234
- var j = 0 ;
236
+ var j = index ;
235
237
var len = array . Length ;
236
- for ( var i = index ; i < _buckets . Length ; i ++ )
238
+
239
+ for ( var i = 0 ; i < _numberOfBuckets ; i ++ )
237
240
{
238
241
for ( var cur = _buckets [ i ] ; cur != null && j < len ; cur = cur . next )
239
242
{
240
243
( ( IList ) array ) [ j ] = new DictionaryEntry ( cur . key , cur . value ) ;
244
+
241
245
j ++ ;
242
246
}
243
247
}
You can’t perform that action at this time.
0 commit comments