summaryrefslogtreecommitdiffhomepage
path: root/include/stc/cdeq.h
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2022-11-23 18:57:53 +0100
committerTyge Løvset <[email protected]>2022-11-23 18:57:53 +0100
commit913cb0ac2f97859ac237f7ae15b29420239837ba (patch)
treeb4b5a389ef006b52aa62989fb2f56dabf81d4912 /include/stc/cdeq.h
parent72f75574edea7a864d5784e38d7d90315c2b2190 (diff)
downloadSTC-modified-913cb0ac2f97859ac237f7ae15b29420239837ba.tar.gz
STC-modified-913cb0ac2f97859ac237f7ae15b29420239837ba.zip
Fixed a bug in cdeq after internal data-rep change.
Diffstat (limited to 'include/stc/cdeq.h')
-rw-r--r--include/stc/cdeq.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/include/stc/cdeq.h b/include/stc/cdeq.h
index 8bc68f3d..11bc82d2 100644
--- a/include/stc/cdeq.h
+++ b/include/stc/cdeq.h
@@ -229,9 +229,10 @@ _cx_memb(_shrink_to_fit)(_cx_self *self) {
memmove(self->_base, self->data, self->_len*sizeof(i_key));
_cx_value* d = (_cx_value*)c_realloc(self->_base, self->_len*sizeof(i_key));
if (d) {
- self->_base = self->data = d;
+ self->_base = d;
self->_cap = self->_len;
}
+ self->data = self->_base;
}
}
@@ -321,7 +322,7 @@ _cx_memb(_expand_left_half_)(_cx_self* self, const size_t idx, const size_t n) {
if (nfront >= n) {
self->data = (_cx_value *)memmove(self->data - n, self->data, idx*sizeof(i_key));
} else {
- if ((size_t)((float)sz*1.3f) > cap)
+ if ((size_t)((float)sz*1.3f) + n > cap)
cap = _cx_memb(_realloc_)(self, n);
const size_t unused = cap - (sz + n);
const size_t pos = (nback*2 < unused) ? unused - nback : unused/2;