diff --git a/Connect4.c b/Connect4.c
index 1cf001778847eca3f5a2746aaffebcd2e10ea916..9e65a5a97a471f19d0a53fb83740bc02d9f3084d 100644
--- a/Connect4.c
+++ b/Connect4.c
@@ -177,8 +177,11 @@ PlacingStatus connect4_play_smart(Connect4 *connect4, void (*on_piece_placed)(Co
             }
 
             if (connect4_check_win(copied_connect4, x, y, current_player)) {
+                connect4_destroy(copied_connect4);
                 return connect4_play(connect4, x + 1, on_piece_placed);
             }
+
+            connect4_destroy(copied_connect4);
         }
 
         current_player = change_player(current_player);
diff --git a/Makefile b/Makefile
index e8b2957fcc2a6e715f29dc361ac0452930c54e72..3360993f5da85a57c2bf2a38aa29565c104a6f7c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,18 +1,20 @@
+CC = gcc
+CCFLAGS = -g -Wall -Wextra -pedantic -fsanitize=address -fsanitize=leak
+
 Connect4.o: Connect4.c
-	gcc -c $< -o $@
+	$(CC) $(CCFLAGS) -c $< -o $@
 
 random.o: random.c
-	gcc -c $< -o $@
+	$(CC) $(CCFLAGS) -c $< -o $@
 
 main.o: main.c
-	gcc -c $< -o $@
+	$(CC) $(CCFLAGS) -c $< -o $@
 
 puissance4: main.o Connect4.o random.o
-	gcc -o puissance4 main.o Connect4.o random.o
+	$(CC) $(CCFLAGS) -o puissance4 main.o Connect4.o random.o
 
 clean:
-	rm -f *.o
-	rm -f puissance4
+	rm -f *.o puissance4
 	$(MAKE) -C testbed clean
 
 tests: puissance4