From 65d5de8f3dc9dfcdf5f7174653d26feab36273aa Mon Sep 17 00:00:00 2001 From: iobyte Date: Wed, 1 Apr 2020 13:22:34 +0000 Subject: [PATCH] fix leaks in error paths found by cppcheck git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@6880 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: dd97d334f3161c0fc05a3d2b15fa02a3e2ecad06 Former-commit-id: 92dd196f404dd0108b18165fddbaf5ba3a51730a --- src/libs/learning/policy.cpp | 1 + src/libs/tgf/params.cpp | 3 +++ src/libs/tgfclient/guifont.cpp | 4 +++- src/tools/accc/ac3dload.cpp | 4 ++++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/libs/learning/policy.cpp b/src/libs/learning/policy.cpp index 95a07585..26f26f59 100644 --- a/src/libs/learning/policy.cpp +++ b/src/libs/learning/policy.cpp @@ -508,6 +508,7 @@ void DiscretePolicy::loadFile (char* f) fprintf(stderr, "Error when reading file"); if (strcmp (rtag, start_tag)) { fprintf (stderr, "Could not find starting tag\n"); + fclose(fh); return; } readSize = fread((void *) &n_read_states, sizeof(int), 1, fh); diff --git a/src/libs/tgf/params.cpp b/src/libs/tgf/params.cpp index 62762dce..2dad0757 100644 --- a/src/libs/tgf/params.cpp +++ b/src/libs/tgf/params.cpp @@ -3742,6 +3742,7 @@ tdble GfParmGetVariable(void *handle, char const *path, char const *key) if ((parmHandle == NULL) || (parmHandle->magic != PARM_MAGIC)) { GfLogError ("GfParmGetVariable: bad handle (%p)\n", parmHandle); + free(pathdup); return 0.0f; } @@ -3789,6 +3790,7 @@ void GfParmRemoveVariable(void *handle, char const *path, char const *key) if ((parmHandle == NULL) || (parmHandle->magic != PARM_MAGIC)) { GfLogError ("GfParmRemoveVariable: bad handle (%p)\n", parmHandle); + free(pathdup); return; } @@ -3818,6 +3820,7 @@ void GfParmSetVariable(void *handle, char const *path, char const *key, tdble va if ((parmHandle == NULL) || (parmHandle->magic != PARM_MAGIC)) { GfLogError ("GfParmSetVariable: bad handle (%p)\n", parmHandle); + free(pathdup); return; } diff --git a/src/libs/tgfclient/guifont.cpp b/src/libs/tgfclient/guifont.cpp index 7a7b1d04..498330c9 100644 --- a/src/libs/tgfclient/guifont.cpp +++ b/src/libs/tgfclient/guifont.cpp @@ -147,8 +147,10 @@ GfuiFontClass::GfuiFontClass(char *FileName) return; } - if (!(font = (GLFONT *)malloc(sizeof(GLFONT)))) + if (!(font = (GLFONT *)malloc(sizeof(GLFONT)))) { + fclose(Input); return; + } //Read glFont structure //fread(font, sizeof(GLFONT), 1, Input); diff --git a/src/tools/accc/ac3dload.cpp b/src/tools/accc/ac3dload.cpp index 48a1a158..6cef52d7 100644 --- a/src/tools/accc/ac3dload.cpp +++ b/src/tools/accc/ac3dload.cpp @@ -626,6 +626,7 @@ int doMaterial(char *Line, ob_t *object, mat_t *material) if (p == NULL) { fprintf(stderr, "unknown MATERIAL format %s \n", Line); + free(materialt); return (-1); } sscanf(p, @@ -664,6 +665,7 @@ int doObject(char *Line, ob_t *object, mat_t *material) if (p == NULL) { fprintf(stderr, "unknown OBJECT format %s \n", Line); + free(objectt); return (-1); } sscanf(p, "%s", name); @@ -1478,11 +1480,13 @@ int loadAC(char * inputFilename, char * outputFilename) if (fgets(Line, 256, file) == NULL) { fprintf(stderr, "failed to read first line of the file\n"); + fclose(file); return (-1); } if (strnicmp(Line, AC3D, strlen(AC3D))) { fprintf(stderr, "unknown format %s \n", Line); + fclose(file); return (-1); }