diff options
| author | Franklin Wei <git@fwei.tk> | 2016-01-26 11:34:40 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2016-01-26 11:34:40 -0500 |
| commit | fd4df830de4d9fdc399b8088e5cc801e052391c4 (patch) | |
| tree | 1dc410c7e743e673ad8ad00ce332202fab06c177 /src/room.c | |
| parent | a1acf425cfb00a41c7862c915eb024207658c814 (diff) | |
| download | netcosm-fd4df830de4d9fdc399b8088e5cc801e052391c4.zip netcosm-fd4df830de4d9fdc399b8088e5cc801e052391c4.tar.gz netcosm-fd4df830de4d9fdc399b8088e5cc801e052391c4.tar.bz2 netcosm-fd4df830de4d9fdc399b8088e5cc801e052391c4.tar.xz | |
fix some memory leaks and a serialization bug
Diffstat (limited to 'src/room.c')
| -rw-r--r-- | src/room.c | 13 |
1 files changed, 3 insertions, 10 deletions
@@ -94,7 +94,7 @@ void world_save(const char *fname) if(!obj) break; id = ROOM_NONE; - + obj_write(fd, obj); } } close(fd); @@ -104,6 +104,7 @@ static void room_free(struct room_t *room) { hash_free(room->users); room->users = NULL; + hash_setfreedata_cb(room->objects, obj_free); hash_free(room->objects); room->objects = NULL; free(room->data.name); @@ -132,21 +133,12 @@ bool room_obj_add(room_id room, struct object_t *obj) #define OBJMAP_SIZE 8 -static void free_obj(void *ptr) -{ - struct object_t *obj = ptr; - if(obj->class->hook_destroy) - obj->class->hook_destroy(obj); - free(obj); -} - /* initialize the room's hash tables */ static void room_init_maps(struct room_t *room) { room->users = hash_init((userdb_size() / 2) + 1, hash_djb, compare_strings); room->objects = hash_init(OBJMAP_SIZE, hash_djb, compare_strings); - hash_setfreedata_cb(room->objects, free_obj); } /** @@ -201,6 +193,7 @@ bool world_load(const char *fname, const struct roomdata_t *data, size_t data_sz for(unsigned j = 0; j < n_objects; ++j) { + debugf("READING %dth OBJECT\n", j); struct object_t *obj = obj_read(fd); if(!room_obj_add(i, obj)) |