From 25c2673323b4940fa18f4a894962f29024dd6724 Mon Sep 17 00:00:00 2001
From: jsalmon3 <>
Date: Tue, 21 May 2002 00:15:18 +0000
Subject: [PATCH] Fix the free macro for gdb/mingw

---
 src/include/freecraft.h  | 5 +++--
 src/stratagus/player.cpp | 3 +--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/include/freecraft.h b/src/include/freecraft.h
index 995e30554..c7d875a78 100644
--- a/src/include/freecraft.h
+++ b/src/include/freecraft.h
@@ -100,9 +100,10 @@
 
 #endif
 
-#ifdef WIN32
+#if defined(WIN32) && defined(DEBUG)
+// GDB + MINGW doesn't like free(0)
 #include <stdlib.h>
-#define free(x) do { if( (x) ) free(x); } while(0)
+#define free(x) do { void* __x; __x=(x); if( __x ) free( __x ); } while(0)
 #endif
 
 #endif	// } __GNUC__
diff --git a/src/stratagus/player.cpp b/src/stratagus/player.cpp
index 863dbae0a..2aba2d85b 100644
--- a/src/stratagus/player.cpp
+++ b/src/stratagus/player.cpp
@@ -127,8 +127,7 @@ global void CleanPlayers(void)
     //
     if( (ptr=RaceWcNames) ) {	// Free all old names
 	while( *ptr ) {
-	    free(*ptr);
-	    ptr++;
+	    free(*ptr++);
 	}
 	free(RaceWcNames);
 	RaceWcNames=NULL;