aboutsummaryrefslogtreecommitdiff
path: root/lib/data
diff options
context:
space:
mode:
authorChristian C <cc@localhost>2025-04-02 18:15:13 -0700
committerChristian C <cc@localhost>2025-04-02 18:15:13 -0700
commit00ce37145556279f4982ef52a747cb2f5e3e3081 (patch)
treeaeee1e555d11bed381f1fdb34f3d95ba1aa05ea8 /lib/data
parentec7436a01deb8e28743de47ad98950c914d6da2a (diff)
Fixed Memory Leak
Diffstat (limited to 'lib/data')
-rw-r--r--lib/data/image_types.c44
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);
}