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:
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);