fixed some memory allocations to prevent valgrind warnings
[rocksndiamonds.git] / src / game_sp / Globals.c
index 44affc03bb9ca1418dccc3888aadbd269e3f95fd..0ca6500049f0c3cb1e07bed3428eea1ddd7a4cd9 100644 (file)
@@ -5,6 +5,9 @@
 #include "Globals.h"
 
 
+static int *PlayField16Mem;
+static byte *PlayField8Mem;
+
 boolean LevelLoaded;
 
 boolean DemoAvailable;
@@ -151,7 +154,7 @@ boolean isSnappingSequence(int sequence)
   }
 }
 
-void InitGlobals()
+void InitGlobals(void)
 {
   InitPrecedingPlayfieldMemory();
 
@@ -166,17 +169,23 @@ void InitGlobals()
   bPlaying = False;
   menBorder = False;
 
-  /* add preceding playfield buffer (as large as preceding memory area) */
-  PlayField16 = checked_calloc((game_sp.preceding_buffer_size +
-                               SP_MAX_PLAYFIELD_SIZE +
-                               SP_HEADER_SIZE) * sizeof(int));
-  PlayField16 = &PlayField16[game_sp.preceding_buffer_size];
-
-  /* add preceding playfield buffer (as large as one playfield row) */
-  PlayField8 = checked_calloc((SP_MAX_PLAYFIELD_WIDTH +
-                              SP_MAX_PLAYFIELD_SIZE +
-                              SP_HEADER_SIZE) * sizeof(byte));
-  PlayField8 = &PlayField8[SP_MAX_PLAYFIELD_WIDTH];
+  // add preceding playfield buffer (as large as preceding memory area)
+  PlayField16Mem = checked_calloc((game_sp.preceding_buffer_size +
+                                  SP_MAX_PLAYFIELD_SIZE +
+                                  SP_HEADER_SIZE) * sizeof(int));
+  PlayField16 = &PlayField16Mem[game_sp.preceding_buffer_size];
+
+  // add preceding playfield buffer (as large as one playfield row)
+  PlayField8Mem = checked_calloc((SP_MAX_PLAYFIELD_WIDTH +
+                                 SP_MAX_PLAYFIELD_SIZE +
+                                 SP_HEADER_SIZE) * sizeof(byte));
+  PlayField8 = &PlayField8Mem[SP_MAX_PLAYFIELD_WIDTH];
+}
+
+void FreeGlobals(void)
+{
+  checked_free(PlayField16Mem);
+  checked_free(PlayField8Mem);
 }
 
 int GetSI(int X, int Y)
@@ -204,7 +213,7 @@ int GetStretchY(int si)
   return StretchWidth * (si / FieldWidth);
 }
 
-void PrepareLevel()
+void PrepareLevel(void)
 {
   copyInternalEngineVars_SP();