Index: sdk/lib/collection/queue.dart |
diff --git a/sdk/lib/collection/queue.dart b/sdk/lib/collection/queue.dart |
index c5d5d367ea67d876ce5f4aed0af2a3eb1d9e3c8e..228a3cc8a6324c20b6c663bfc3c2ee9e2a9d53d4 100644 |
--- a/sdk/lib/collection/queue.dart |
+++ b/sdk/lib/collection/queue.dart |
@@ -458,17 +458,17 @@ class ListQueue<E> extends Collection<E> implements Queue<E>{ |
if (length + addCount >= _table.length) { |
_preGrow(length + addCount); |
// After preGrow, all elements are at the start of the list. |
- _table.setRange(length, addCount, list, 0); |
+ _table.setRange(length, length + addCount, list, 0); |
_tail += addCount; |
} else { |
// Adding addCount elements won't reach _head. |
int endSpace = _table.length - _tail; |
if (addCount < endSpace) { |
- _table.setRange(_tail, addCount, list, 0); |
+ _table.setRange(_tail, _tail + addCount, list, 0); |
_tail += addCount; |
} else { |
int preSpace = addCount - endSpace; |
- _table.setRange(_tail, endSpace, list, 0); |
+ _table.setRange(_tail, _tail + endSpace, list, 0); |
_table.setRange(0, preSpace, list, endSpace); |
_tail = preSpace; |
} |
@@ -661,7 +661,7 @@ class ListQueue<E> extends Collection<E> implements Queue<E>{ |
List<E> newTable = new List<E>(_table.length * 2); |
int split = _table.length - _head; |
newTable.setRange(0, split, _table, _head); |
- newTable.setRange(split, _head, _table, 0); |
+ newTable.setRange(split, split + _head, _table, 0); |
_head = 0; |
_tail = _table.length; |
_table = newTable; |
@@ -676,7 +676,7 @@ class ListQueue<E> extends Collection<E> implements Queue<E>{ |
} else { |
int firstPartSize = _table.length - _head; |
target.setRange(0, firstPartSize, _table, _head); |
- target.setRange(firstPartSize, _tail, _table, 0); |
+ target.setRange(firstPartSize, firstPartSize + _tail, _table, 0); |
return _tail + firstPartSize; |
} |
} |