fix memory leaks
authorLaurent Mazet <mazet@softndesign.org>
Wed, 5 Jun 2024 22:09:06 +0000 (00:09 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Wed, 5 Jun 2024 22:09:06 +0000 (00:09 +0200)
function.c
function.h
scrabble.c

index 0a963097ef4c703a694c539432628ce6fec3f073..e138664b452f526dbed4d25895dbd6b1b2f49083 100644 (file)
@@ -28,6 +28,14 @@ play_t *initplay (int xsize, int ysize)
     return play;
 }
 
+void freeplay (play_t *play)
+{
+    if (play) {
+        free (play->tab);
+    }
+    free (play);
+}
+
 int putletter (play_t *play, char letter, int x, int y)
 {
     int ret = (letter != '\0') && (play->tab[x + play->xsize * y] == ' ');
@@ -62,6 +70,14 @@ draw_t *initdraw (bag_t *bag)
     return draw;
 }
 
+void freedraw (draw_t *draw)
+{
+    if (draw) {
+        free (draw->tiles);
+    }
+    free (draw);
+}
+
 draw_t *retrievetiles (draw_t *draw, int nbtiles, draw_t *game)
 {
     draw_t *ret = (game == NULL) ? newdraw (nbtiles) : game;
@@ -87,12 +103,6 @@ draw_t *retrievetiles (draw_t *draw, int nbtiles, draw_t *game)
     return ret;
 }
 
-void freedraw (draw_t *draw)
-{
-    free (draw->tiles);
-    free (draw);
-}
-
 char getnextletter (draw_t *game)
 {
     char letter = 0;
index 2fc1f70807a634e2cf2b307b65e1a02e43e9c145..79934e51b5e75a3d578f6ce39ae3e8c90419a247 100644 (file)
@@ -7,6 +7,8 @@ int contains (char *list, char *str);
 
 play_t *initplay (int xsize, int ysize);
 
+void freeplay (play_t *play);
+
 int putletter (play_t *play, char letter, int x, int y);
 
 void removeletter (play_t *play, int x, int y);
@@ -17,6 +19,8 @@ draw_t *newdraw (int nbtiles);
 
 draw_t *initdraw (bag_t *bag);
 
+void freedraw (draw_t *draw);
+
 draw_t *retrievetiles (draw_t *draw, int nbtiles, draw_t *game);
 
 void freedraw (draw_t *draw);
index b42c61c5eb1efc4aa01af9a7a85f97c1e24ec2bb..73908b57c4612fbc97cb018e05549e0e151d0ce8 100644 (file)
@@ -251,6 +251,10 @@ int main (int argc, char *argv[])
 
     endwin ();
 
+    freeplay (play);
+    freedraw (game);
+    freedraw (draw);
+
     return 0;
 }