From cbab8d7f70ff7dd381462151e939d5e73c0134f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Thu, 22 Sep 2022 21:28:20 +0800 Subject: [PATCH] Fix some memleaks --- src/common/init.c | 12 ++++++++++++ src/fastfetch.c | 2 ++ src/modules/publicip.c | 3 +++ 3 files changed, 17 insertions(+) diff --git a/src/common/init.c b/src/common/init.c index 7d66b07b5..0ef3b700b 100644 --- a/src/common/init.c +++ b/src/common/init.c @@ -72,6 +72,7 @@ static void initConfigDirs(FFstate* state) startIndex = colonIndex + 1; } + ffStrbufDestroy(&xdgConfigDirs); FFstrbuf* systemConfigHome = ffListAdd(&state->configDirs); ffStrbufInitA(systemConfigHome, 64); @@ -382,6 +383,17 @@ void ffFinish(FFinstance* instance) ffLogoPrintRemaining(instance); resetConsole(); + + for(uint32_t i = 0; i < instance->state.configDirs.length; ++i) + ffStrbufDestroy((FFstrbuf*)ffListGet(&instance->state.configDirs, i)); + ffListDestroy(&instance->state.configDirs); + ffStrbufDestroy(&instance->state.cacheDir); + for(uint8_t i = 0; i < (uint8_t) FASTFETCH_LOGO_MAX_COLORS; ++i) + ffStrbufDestroy(&instance->config.logo.colors[i]); + ffStrbufDestroy(&instance->config.colorKeys); + ffStrbufDestroy(&instance->config.colorTitle); + ffStrbufDestroy(&instance->config.separator); + ffStrbufDestroy(&instance->config.logo.source); } //Must be in a file compiled with the libfastfetch target, because the FF_HAVE* macros are not defined for the executable targets diff --git a/src/fastfetch.c b/src/fastfetch.c index cda0496f2..be259a70b 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -1448,6 +1448,8 @@ int main(int argc, const char** argv) startIndex = colonIndex + 1; } + ffStrbufDestroy(&data.structure); + ffValuestoreDestroy(&data.customValues); ffFinish(&instance); } diff --git a/src/modules/publicip.c b/src/modules/publicip.c index aacb0537c..4ff5e59b4 100644 --- a/src/modules/publicip.c +++ b/src/modules/publicip.c @@ -15,6 +15,7 @@ void ffPrintPublicIp(FFinstance* instance) if(result.length == 0) { ffPrintError(instance, FF_PUBLICIP_MODULE_NAME, 0, &instance->config.publicIP, "Failed to connect to an IP detection server"); + ffStrbufDestroy(&result); return; } @@ -29,4 +30,6 @@ void ffPrintPublicIp(FFinstance* instance) {FF_FORMAT_ARG_TYPE_STRBUF, &result} }); } + + ffStrbufDestroy(&result); }