diff options
author | Christian C <cc@localhost> | 2025-04-02 18:15:13 -0700 |
---|---|---|
committer | Christian C <cc@localhost> | 2025-04-02 18:15:13 -0700 |
commit | 00ce37145556279f4982ef52a747cb2f5e3e3081 (patch) | |
tree | aeee1e555d11bed381f1fdb34f3d95ba1aa05ea8 /lib/data | |
parent | ec7436a01deb8e28743de47ad98950c914d6da2a (diff) |
Fixed Memory Leak
Diffstat (limited to 'lib/data')
-rw-r--r-- | lib/data/image_types.c | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/lib/data/image_types.c b/lib/data/image_types.c index f5c9115..6e8f6b4 100644 --- a/lib/data/image_types.c +++ b/lib/data/image_types.c @@ -68,29 +68,45 @@ Mask *create_image_mask(size_t width, size_t height) { } void free_image(Image *image) { - if (image->image[0] != NULL) { - g_free(image->image[0]); - image->image[0] = NULL; + if (image == NULL) { + return; } - if (image->image != NULL) { - g_free(image->image); - image->image = NULL; + if (image->image == NULL) { + g_free(image); + return; } - if (image != NULL) { + if (image->image[0] != NULL) { + if (image->image[0][0] != NULL) { + g_free(image->image[0][0]); + } + } else { + g_free(image->image); g_free(image); + return; + } + for (size_t y = 0; y < image->height; y++) { + if (image->image[y] != NULL) { + g_free(image->image[y]); + } } + g_free(image->image); + image->image = NULL; + g_free(image); } void free_image_mask(Mask *image_mask) { + if (image_mask == NULL) { + return; + } + if (image_mask->image == NULL) { + g_free(image_mask); + return; + } if (image_mask->image[0] != NULL) { g_free(image_mask->image[0]); image_mask->image[0] = NULL; } - if (image_mask->image != NULL) { - g_free(image_mask->image); - image_mask->image = NULL; - } - if (image_mask != NULL) { - g_free(image_mask); - } + g_free(image_mask->image); + image_mask->image = NULL; + g_free(image_mask); } |