From d4cdbd52e6fed3d9790632a53939f45e99d6e1f8 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Sat, 24 Apr 2021 21:29:45 +0200 Subject: Minor cleanup after cdeq_X_expand_() bugfix. --- stc/cdeq.h | 7 ++++--- stc/cvec.h | 2 +- 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; \ -- cgit v1.2.3