Fix a deque size bookkeeping bug.
This commit is contained in:
parent
fd0750b218
commit
75e46cc4d0
1 changed files with 3 additions and 1 deletions
|
@ -47,7 +47,7 @@ fn create[T]() -> t[T] {
|
||||||
ret _vec.init_fn[cell[T]](copy_op, nalloc);
|
ret _vec.init_fn[cell[T]](copy_op, nalloc);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get[T](&vec[cell[T]] elts, uint i) -> T {
|
fn get[T](vec[cell[T]] elts, uint i) -> T {
|
||||||
alt (elts.(i)) {
|
alt (elts.(i)) {
|
||||||
case (util.some[T](t)) { ret t; }
|
case (util.some[T](t)) { ret t; }
|
||||||
case (_) { fail; }
|
case (_) { fail; }
|
||||||
|
@ -100,6 +100,7 @@ fn create[T]() -> t[T] {
|
||||||
let T t = get[T](elts, lo);
|
let T t = get[T](elts, lo);
|
||||||
elts.(lo) = util.none[T]();
|
elts.(lo) = util.none[T]();
|
||||||
lo = (lo + 1u) % _vec.len[cell[T]](elts);
|
lo = (lo + 1u) % _vec.len[cell[T]](elts);
|
||||||
|
nelts -= 1u;
|
||||||
ret t;
|
ret t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,6 +113,7 @@ fn create[T]() -> t[T] {
|
||||||
|
|
||||||
let T t = get[T](elts, hi);
|
let T t = get[T](elts, hi);
|
||||||
elts.(hi) = util.none[T]();
|
elts.(hi) = util.none[T]();
|
||||||
|
nelts -= 1u;
|
||||||
ret t;
|
ret t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue