aboutsummaryrefslogtreecommitdiff
path: root/src/room.c
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2015-12-25 17:28:09 -0500
committerFranklin Wei <git@fwei.tk>2015-12-25 17:28:09 -0500
commitf7041112f179aa79b6e315e7d57afbf76d3cd8bb (patch)
treec1c419845c0838ae15afe1da0cc54bf6447a760e /src/room.c
parent2a81620aa5b740d7f77aff8177a983b7492b8ea0 (diff)
downloadnetcosm-f7041112f179aa79b6e315e7d57afbf76d3cd8bb.zip
netcosm-f7041112f179aa79b6e315e7d57afbf76d3cd8bb.tar.gz
netcosm-f7041112f179aa79b6e315e7d57afbf76d3cd8bb.tar.bz2
netcosm-f7041112f179aa79b6e315e7d57afbf76d3cd8bb.tar.xz
implement child lookup via hash table
Diffstat (limited to 'src/room.c')
-rw-r--r--src/room.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/room.c b/src/room.c
index fb8d138..18fd37e 100644
--- a/src/room.c
+++ b/src/room.c
@@ -125,11 +125,17 @@ bool world_load(const char *fname, const struct roomdata_t *data, size_t data_sz
if(magic != WORLD_MAGIC)
return false;
read(fd, &world_sz, sizeof(world_sz));
+
if(world)
+ /* possible memory leak here as strings allocated inside of world
+ aren't freed. avoided by loading only one world per instance */
free(world);
+
if(world_sz != data_sz)
return false;
+
world = calloc(world_sz, sizeof(struct room_t));
+
for(unsigned i = 0; i < world_sz; ++i)
{
world[i].id = read_roomid(fd);