Fix bug in capacity()

See http://stackoverflow.com/q/29727368/2756719; the bit-twiddling version is not equivalent to the original `return (index_size ? (index_size - ExtraPointers + extra_capacity) : index_size);`; it ends up subtracting, rather than adding, `extra_capacity`.
This commit is contained in:
timsong-cpp
2015-04-19 04:30:08 -04:00
parent ad54608d78
commit 6bf6c553fd

View File

@@ -1117,7 +1117,7 @@ class stable_vector
const size_type extra_capacity = (bucket_extra_capacity < node_extra_capacity)
? bucket_extra_capacity : node_extra_capacity;
const size_type index_offset =
(ExtraPointers + extra_capacity) & (size_type(0u) - size_type(index_size != 0));
(ExtraPointers - extra_capacity) & (size_type(0u) - size_type(index_size != 0));
return index_size - index_offset;
}