On Sun, 2010-04-18 at 04:48 -0400, Gilles J. Seguin wrote:
> my proposal for fixing

src/game.c: have removed first argument that is usefull for macro
FIXME_CAST_ASSIGN_ID_FROM_PTR

configure.ac: removed the -Wno-pointer-to-int-cast option

Index: src/game.c
===================================================================
--- src/game.c	(revision 10641)
+++ src/game.c	(working copy)
@@ -92,11 +92,13 @@
 #define SAVEKEY_ONMISSION	0x100
 
 /*!
- * FIXME
- * The code is reusing some pointers as normal integer values apparently. This
- * should be fixed!
+ * FIXME, that is hacker code, using union should be used, would make codes harder to read
+ * The code is reusing some pointers as normal UDWORD values temporaly for restoring from saved
+ * game. This should be fixed! will not
  */
 #define FIXME_CAST_ASSIGN(TYPE, lval, rval) { TYPE* __tmp = (TYPE*) &lval; *__tmp = (TYPE)rval; }
+/* 64-bit system dont like previous */
+#define FIXME_CAST_ASSIGN_ID_FROM_PTR(lval, rval) { lval = (UDWORD)(long)rval; }
 
 /// @note This represents a size internal to savegame files, so: DO NOT CHANGE THIS
 #define MAX_GAME_STR_SIZE 20
@@ -5956,7 +5958,7 @@
 			{
 				UDWORD id;
 				//Target rebuild the object pointer from the ID
-				FIXME_CAST_ASSIGN(UDWORD, id, psDroid->psTarget);
+				FIXME_CAST_ASSIGN_ID_FROM_PTR(id, psDroid->psTarget);
 				if (id != NULL_ID)
 				{
 					setSaveDroidTarget(psDroid, getBaseObjFromId(id));
@@ -5971,7 +5973,7 @@
 					setSaveDroidTarget(psDroid, NULL);
 				}
 				//ActionTarget rebuild the object pointer from the ID
-				FIXME_CAST_ASSIGN(UDWORD, id, psDroid->psActionTarget[0]);
+				FIXME_CAST_ASSIGN_ID_FROM_PTR(id, psDroid->psActionTarget[0]);
 				if (id != NULL_ID)
 				{
 					setSaveDroidActionTarget(psDroid, getBaseObjFromId(id), 0);
@@ -5986,7 +5988,7 @@
 					setSaveDroidActionTarget(psDroid, NULL, 0);
 				}
 				//BaseStruct rebuild the object pointer from the ID
-				FIXME_CAST_ASSIGN(UDWORD, id, psDroid->psBaseStruct);
+				FIXME_CAST_ASSIGN_ID_FROM_PTR(id, psDroid->psBaseStruct);
 				if (id != NULL_ID)
 				{
 					setSaveDroidBase(psDroid, (STRUCTURE*)getBaseObjFromId(id));
@@ -6004,10 +6006,10 @@
 				{
 					UDWORD _tmpid;
 					//rebuild group for droids in command group from the commander ID
-					FIXME_CAST_ASSIGN(UDWORD, id, psDroid->psGrpNext);
+					FIXME_CAST_ASSIGN_ID_FROM_PTR(id, psDroid->psGrpNext);
 					if (id == NULL_ID)
 					{
-						FIXME_CAST_ASSIGN(UDWORD, _tmpid, psDroid->psGroup);
+						FIXME_CAST_ASSIGN_ID_FROM_PTR(_tmpid, psDroid->psGroup);
 						psDroid->psGroup = NULL;
 						psDroid->psGrpNext = NULL;
 						if (_tmpid != NULL_ID)
@@ -6606,7 +6608,7 @@
 			if ((psCurr->psBaseStruct != NULL))
 			{
 				UDWORD _tmpid;
-				FIXME_CAST_ASSIGN(UDWORD, _tmpid, psCurr->psBaseStruct);
+				FIXME_CAST_ASSIGN_ID_FROM_PTR(_tmpid, psCurr->psBaseStruct);
 				if (_tmpid != NULL_ID && psCurr->psBaseStruct->died <= 1 && checkValidId(psCurr->psBaseStruct->id))
 				{
 					psSaveDroid->baseStructID = psCurr->psBaseStruct->id;
@@ -8325,7 +8327,7 @@
 					case REF_CYBORG_FACTORY:
 					case REF_VTOL_FACTORY:
 						psFactory = ((FACTORY *)psStruct->pFunctionality);
-						FIXME_CAST_ASSIGN(UDWORD, _tmpid, psFactory->psCommander);
+						FIXME_CAST_ASSIGN_ID_FROM_PTR(_tmpid, psFactory->psCommander);
 						//there is a commander then has been temporarily removed
 						//so put it back
 						if (_tmpid != NULL_ID)
@@ -8358,7 +8360,7 @@
 						break;
 					case REF_REPAIR_FACILITY:
 						psRepair = ((REPAIR_FACILITY *)psStruct->pFunctionality);
-						FIXME_CAST_ASSIGN(UDWORD, _tmpid, psRepair->psObj);
+						FIXME_CAST_ASSIGN_ID_FROM_PTR(_tmpid, psRepair->psObj);
 						if (_tmpid == NULL_ID)
 						{
 							psRepair->psObj = NULL;
@@ -8381,7 +8383,7 @@
 						psReArmPad = ((REARM_PAD *)psStruct->pFunctionality);
 						if (saveGameVersion >= VERSION_26)//version 26
 						{
-							FIXME_CAST_ASSIGN(UDWORD, _tmpid, psReArmPad->psObj)
+							FIXME_CAST_ASSIGN_ID_FROM_PTR(_tmpid, psReArmPad->psObj)
 							if (_tmpid == NULL_ID)
 							{
 								psReArmPad->psObj = NULL;
@@ -10769,7 +10771,7 @@
 				{
 					if (psStruct->pStructureType->type == factoryToFind)
 					{
-						if ((UDWORD)((FACTORY *)psStruct->pFunctionality)->psAssemblyPoint == psflag->factoryInc)
+						if ((UDWORD)(long)((FACTORY *)psStruct->pFunctionality)->psAssemblyPoint == psflag->factoryInc)
 						{
 							//this is the one so set it
 							((FACTORY *)psStruct->pFunctionality)->psAssemblyPoint = psflag;
Index: configure.ac
===================================================================
--- configure.ac	(revision 10641)
+++ configure.ac	(working copy)
@@ -214,7 +214,7 @@
 		WZ_CFLAGS="${WZ_CFLAGS} -O0 -g -Wcheck -Werror"
 		WZ_CPPFLAGS="${WZ_CPPFLAGS} -DDEBUG"
 	else
-		WZ_CFLAGS="${WZ_CFLAGS} -O0 -g -Wall -Werror -Wno-unused-label -Wno-pointer-to-int-cast -Wmissing-field-initializers -Wcast-align -Wwrite-strings"
+		WZ_CFLAGS="${WZ_CFLAGS} -O0 -g -Wall -Werror -Wno-unused-label -Wmissing-field-initializers -Wcast-align -Wwrite-strings"
 		WZ_CFLAGS="${WZ_CFLAGS} -Wmissing-declarations -Wstrict-prototypes -Wpointer-arith -Wno-format-security -Wdeclaration-after-statement"
 		WZ_C99FLAGS="${WZ_C99FLAGS} -Wno-declaration-after-statement"
 		WZ_CPPFLAGS="${WZ_CPPFLAGS} -DDEBUG"
@@ -342,15 +342,41 @@
 ])
 
 # Look for Motif
_______________________________________________
Warzone-dev mailing list
[email protected]
https://mail.gna.org/listinfo/warzone-dev

Reply via email to