summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2021-04-24 21:29:45 +0200
committerTyge Løvset <[email protected]>2021-04-24 21:29:45 +0200
commitd4cdbd52e6fed3d9790632a53939f45e99d6e1f8 (patch)
treefc01856b9c31a471195df5371d1cb2948f9e6074
parent59d37f5accfcf5c3f5848827d031bacba445bed6 (diff)
downloadSTC-modified-d4cdbd52e6fed3d9790632a53939f45e99d6e1f8.tar.gz
STC-modified-d4cdbd52e6fed3d9790632a53939f45e99d6e1f8.zip
Minor cleanup after cdeq_X_expand_() bugfix.
-rw-r--r--stc/cdeq.h7
-rw-r--r--stc/cvec.h2
2 files changed, 5 insertions, 4 deletions
diff --git a/stc/cdeq.h b/stc/cdeq.h
index ffdb7a4b..398edea3 100644
--- a/stc/cdeq.h
+++ b/stc/cdeq.h
@@ -225,9 +225,9 @@ static struct cdeq_rep _cdeq_inits = {0, 0};
if (at_front && nfront >= n || !at_front && nback >= n) \
return; \
if ((len + n)*1.4 > cap) { \
- cap = (len + n + 6)*2; \
+ cap = (len + 6)*2 + n; \
rep = (struct cdeq_rep*) c_realloc(rep->cap ? rep : NULL, \
- sizeof(struct cdeq_rep) + cap*sizeof(Value)); \
+ offsetof(struct cdeq_rep, base) + cap*sizeof(Value)); \
rep->size = len, rep->cap = cap; \
self->_base = (CX##_value_t *) rep->base; \
self->data = self->_base + nfront; \
@@ -235,7 +235,8 @@ static struct cdeq_rep _cdeq_inits = {0, 0};
size_t pos = (cap - (len + n)) / 2; \
if (at_front && nback < pos) pos += pos - nback; \
else if (!at_front && nfront < pos) pos = nfront; \
- self->data = (CX##_value_t *) memmove(self->_base + pos, self->data, len*sizeof(Value)); \
+ if (pos != nfront) \
+ self->data = (CX##_value_t *) memmove(self->_base + pos, self->data, len*sizeof(Value)); \
} \
\
STC_DEF void \
diff --git a/stc/cvec.h b/stc/cvec.h
index 2092913f..b42474f6 100644
--- a/stc/cvec.h
+++ b/stc/cvec.h
@@ -226,7 +226,7 @@ static struct cvec_rep _cvec_inits = {0, 0};
size_t len = rep->size, oldcap = rep->cap; \
if (cap > oldcap) { \
rep = (struct cvec_rep*) c_realloc(oldcap ? rep : NULL, \
- sizeof(struct cvec_rep) + cap*sizeof(Value)); \
+ offsetof(struct cvec_rep, data) + cap*sizeof(Value)); \
self->data = (CX##_value_t*) rep->data; \
rep->size = len; \
rep->cap = cap; \