summaryrefslogtreecommitdiff
path: root/src/demo.c
diff options
context:
space:
mode:
authorjohannes <johannes.herman@gmail.com>2024-02-10 19:43:58 +0100
committerjohannes <johannes.herman@gmail.com>2024-02-10 19:43:58 +0100
commit72d67bf117250fe5695d122597b3cd103a7aada6 (patch)
treed88da51eb9efcdbd868f06a0cdc3c28d62c1f184 /src/demo.c
parent6485e05c08167b2ce13b9a9ed3b236fed6070df8 (diff)
added free demo, new test data
Diffstat (limited to 'src/demo.c')
-rw-r--r--src/demo.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/demo.c b/src/demo.c
index 7c8bdbf..57ce8d1 100644
--- a/src/demo.c
+++ b/src/demo.c
@@ -18,6 +18,41 @@ const char headermagic[7] = "TWDEMO\0";
const unsigned char mapmagic[] = {0x6b, 0xe6, 0xda, 0x4a, 0xce, 0xbd, 0x38, 0x0c,
0x9b, 0x5b, 0x12, 0x89, 0xc8, 0x42, 0xd7, 0x80};
+void freedemo(demo *demo)
+{
+ free(demo->map.data);
+
+ for(int i = 0; i < demo->data.numchunks; i++)
+ {
+ demochunk *chunk = &demo->data.chunks[i];
+ switch (chunk->type)
+ {
+ case DEMOTICK:
+ free(chunk->data.tick);
+ break;
+ case DEMOSNAP:
+ for (int y = 0; y < chunk->data.snap->numitems; y++)
+ free(chunk->data.snap->items[y].data);
+ free(chunk->data.snap->offsets);
+ free(chunk->data.snap->items);
+ free(chunk->data.snap);
+ break;
+ case DEMOMESSAGE:
+ free(chunk->data.message->data);
+ free(chunk->data.message);
+ break;
+ case DEMODELTA:
+ free(chunk->data.delta->data);
+ free(chunk->data.delta);
+ break;
+ default:
+ break;
+ }
+ }
+ free(demo->data.chunks);
+
+}
+
/* readers */
int readdemoheader(FILE *fp, demoheader *dh)