From 484264027c7a8d3be37167d78a288ea846cccfbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Fri, 23 Sep 2022 15:10:50 +0800 Subject: [PATCH] FFstrbuf: don't free string literals --- src/util/FFstrbuf.c | 2 ++ tests/strbuf.c | 4 ++++ 2 files changed, 6 insertions(+) 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);