diff options
| author | Franklin Wei <frankhwei536@gmail.com> | 2015-12-25 17:28:09 -0500 |
|---|---|---|
| committer | Franklin Wei <frankhwei536@gmail.com> | 2015-12-25 17:28:09 -0500 |
| commit | c949ff2ac3fca2bee3c3c6e97a63d151b7c31594 (patch) | |
| tree | c1c419845c0838ae15afe1da0cc54bf6447a760e /src/room.c | |
| parent | c8e8d7de47a829f9dbc18b1072453c7a48e67ddb (diff) | |
| download | netcosm-c949ff2ac3fca2bee3c3c6e97a63d151b7c31594.zip netcosm-c949ff2ac3fca2bee3c3c6e97a63d151b7c31594.tar.gz netcosm-c949ff2ac3fca2bee3c3c6e97a63d151b7c31594.tar.bz2 netcosm-c949ff2ac3fca2bee3c3c6e97a63d151b7c31594.tar.xz | |
implement child lookup via hash table
Diffstat (limited to 'src/room.c')
| -rw-r--r-- | src/room.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -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); |