git » fp-git.git » commit 9feb1ba

vg: improved memory frees for map resources

author ecalot
2004-08-30 15:33:22 UTC
committer ecalot
2004-08-30 15:33:22 UTC
parent 00d8de22d310afbcc8ef0ddeead274d4497ba61f

vg: improved memory frees for map resources

FP/src/include/maps.h +1 -1
FP/src/res/maps.c +10 -1
FP/src/res/resources.c +5 -3

diff --git a/FP/src/include/maps.h b/FP/src/include/maps.h
index 7ba7acd..1e1c033 100644
--- a/FP/src/include/maps.h
+++ b/FP/src/include/maps.h
@@ -44,7 +44,7 @@ maps.c: Freeprince : Map handling library
 
 /* called from reources */
 void* mapLoadLevel(tMemory level);
-void  mapDestroy(tMap* map);
+void  mapFreeLevel(tMap* map);
 
 /* called from the kernel */
 tRoom mapGetRoom(tMap* map, tRoomId roomId);
diff --git a/FP/src/res/maps.c b/FP/src/res/maps.c
index 9c6c959..388cdf7 100644
--- a/FP/src/res/maps.c
+++ b/FP/src/res/maps.c
@@ -358,7 +358,16 @@ void  mapPressedTile(tMap* map, tTile tile, int s, int x, int y) {
 	}
 }
 
-
+void  mapFreeLevel(tMap* map) {
+	int i;
+	for (i=0;i<24;i++) {
+		free(map->screenGates[i]);
+		free(map->screenPressables[i]);
+	}
+	free(map->gates);
+	free(map->pressables);
+	free(map);
+}
 
 
 
diff --git a/FP/src/res/resources.c b/FP/src/res/resources.c
index d6e2c91..98fe3af 100644
--- a/FP/src/res/resources.c
+++ b/FP/src/res/resources.c
@@ -237,12 +237,14 @@ tData* resLoad(long id) {
 
 void resFree(tData* res) {
 	if (res->type==eImages) {
-		while (res->frames) {
+		while (res->frames) { /* free all frames */
 			outputFreeBitmap(res->pFrames[--(res->frames)]);
 		}
+		free(res->pFrames); /* free the frame list */
+	} else if (res->type==eLevels) {
+		mapFreeLevel((tMap*)(res->pFrames)); /* free the map */
 	}
 	fprintf(stderr,"ResFree activated\n");
-	free(res->pFrames);
-	free(res);
+	free(res); /* free the resource structure */
 }