star-3daw

Create star-3d geometries from OBJ files
git clone git://git.meso-star.fr/star-3daw.git
Log | Files | Refs | README | LICENSE

commit be738b0fbf812648901f3ffb0d28ee2c4dbeb51b
parent f9a9faac3dab4203db16f27a55cd37905902b628
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Tue,  1 Sep 2015 17:34:22 +0200

Fix memory leaks

If an error was handled, the loaded material could be not released
properly, leading to memory leaks.

Diffstat:
Msrc/s3daw.c | 8++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/s3daw.c b/src/s3daw.c @@ -314,10 +314,12 @@ static res_T shapes_create(struct s3daw* s3daw, const char* filename) { struct aw_obj_desc obj_desc; + struct aw_material material; size_t imtl; res_T res = RES_OK; ASSERT(s3daw && filename); + AW(material_init(s3daw->allocator, &material)); AW(obj_desc_get(s3daw->loader_obj, &obj_desc)); shapes_clear(&s3daw->shapes); @@ -338,9 +340,7 @@ shapes_create(struct s3daw* s3daw, const char* filename) } else { size_t imtllib; size_t dirname_len; - struct aw_material material; - AW(material_init(s3daw->allocator, &material)); - + /* Setup the `mtllib' buffer with the directory of the filename */ res = get_dirname(filename, &s3daw->mtllib); if(res != RES_OK) goto error; @@ -388,10 +388,10 @@ shapes_create(struct s3daw* s3daw, const char* filename) res = shape_register(s3daw, &s3daw->mtl); if(res != RES_OK) goto error; } - AW(material_release(&material)); } exit: + AW(material_release(&material)); return res; error: shapes_clear(&s3daw->shapes);