diff --git a/src/util/FFstrbuf.c b/src/util/FFstrbuf.c index d08e91434..e6f705f52 100644 --- a/src/util/FFstrbuf.c +++ b/src/util/FFstrbuf.c @@ -549,6 +549,8 @@ uint16_t ffStrbufToUInt16(const FFstrbuf* strbuf, uint16_t defaultValue) void ffStrbufDestroy(FFstrbuf* strbuf) { + if(strbuf->allocated == 0) return; + //Avoid free-after-use. These 3 assignments are cheap so don't remove them strbuf->allocated = strbuf->length = 0; free(strbuf->chars); diff --git a/tests/strbuf.c b/tests/strbuf.c index a096498fb..a82180d60 100644 --- a/tests/strbuf.c +++ b/tests/strbuf.c @@ -24,6 +24,10 @@ int main(int argc, char** argv) FFstrbuf strbuf; + //destroy 0 + ffStrbufInitA(&strbuf, 0); + ffStrbufDestroy(&strbuf); + //initA ffStrbufInitA(&strbuf, 0);