From a5b9c6890eb18c43cd6e851d4f96b05febbd31d3 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Sun, 30 Aug 2020 10:04:25 +0200 Subject: Fixed an important bug in cstr.h append(). --- stc/cstr.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/stc/cstr.h b/stc/cstr.h index 6e6bcedb..b5aab764 100644 --- a/stc/cstr.h +++ b/stc/cstr.h @@ -275,8 +275,11 @@ STC_API cstr_t* cstr_append_n(cstr_t* self, const char* str, size_t len) { if (len) { size_t oldlen = cstr_size(*self), newlen = oldlen + len; - if (newlen > cstr_capacity(*self)) + if (newlen > cstr_capacity(*self)) { + size_t off = (size_t) (str - self->str); cstr_reserve(self, newlen * 3 / 2); + if (off <= oldlen) str = self->str + off; + } memmove(&self->str[oldlen], str, len); self->str[_cstr_size(*self) = newlen] = '\0'; } -- cgit v1.2.3