commit 6de6e201f5b182780b4fa4807ebf7cbae6e26b94
parent c145160f3046f4bb9d0c31c24e2bf0db73ab29c6
Author: vaplv <vaplv@free.fr>
Date: Tue, 6 Jan 2015 15:12:37 +0100
Handle empty group name
Diffstat:
2 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/src/aw_obj.c b/src/aw_obj.c
@@ -300,10 +300,6 @@ parse_group(struct aw_obj* obj, char** word_tk)
flush_groups(obj);
word = strtok_r(NULL, " \t", word_tk);
- if(!word) {
- res = RES_BAD_ARG;
- goto error;
- }
ngrps = igrp = darray_named_group_size_get(&obj->groups);
obj->igroups_active = ngrps;
do {
@@ -313,7 +309,7 @@ parse_group(struct aw_obj* obj, char** word_tk)
goto error;
grp = darray_named_group_data_get(&obj->groups) + ngrps;
++igrp;
- res = str_set(&grp->name, word);
+ res = str_set(&grp->name, word ? word : "default");
if(res != RES_OK)
goto error;
grp->iface = darray_face_size_get(&obj->faces);
diff --git a/src/test_aw_obj.c b/src/test_aw_obj.c
@@ -28,6 +28,7 @@ test_plane(struct aw_obj* obj)
static const char* plane_obj =
"mtllib master.mtl"
"\n"
+ "g\n"
"v 0.0000 2.0000 0.0000\n"
"v 0.0000 0.0000 0.0000\n"
"v 2.0000 0.0000 0.0000\n"
@@ -44,6 +45,7 @@ test_plane(struct aw_obj* obj)
float v4[4];
struct aw_obj_desc desc;
struct aw_obj_face face;
+ struct aw_obj_group group;
struct aw_obj_mtl mtl;
struct aw_obj_vertex vertex;
FILE* file;
@@ -67,7 +69,7 @@ test_plane(struct aw_obj* obj)
CHECK(aw_obj_desc_get(NULL, &desc), RES_BAD_ARG);
CHECK(aw_obj_desc_get(obj, &desc), RES_OK);
CHECK(desc.faces_count, 1);
- CHECK(desc.groups_count, 0);
+ CHECK(desc.groups_count, 1);
CHECK(desc.smooth_groups_count, 0);
CHECK(desc.usemtls_count, 1);
CHECK(desc.mtllibs_count, 1);
@@ -82,7 +84,7 @@ test_plane(struct aw_obj* obj)
CHECK(aw_obj_face_get(obj, 0, &face), RES_OK);
CHECK(face.vertex_id, 0);
CHECK(face.vertices_count, 4);
- CHECK(face.group_id, AW_ID_NONE);
+ CHECK(face.group_id, 0);
CHECK(face.smooth_group_id, AW_ID_NONE);
CHECK(face.mtl_id, 0);
@@ -128,6 +130,18 @@ test_plane(struct aw_obj* obj)
CHECK(aw_obj_vertex_get(obj, 3, &vertex), RES_OK);
CHECK(f4_eq(vertex.position, f4(v4, 2.f, 2.f, 0.f, 1.f)), 1);
CHECK(f3_eq(vertex.texcoord, f3(v4, 1.f, 1.f, 0.f)), 1);
+
+ CHECK(aw_obj_group_get(NULL, AW_ID_NONE, NULL), RES_BAD_ARG);
+ CHECK(aw_obj_group_get(obj, AW_ID_NONE, NULL), RES_BAD_ARG);
+ CHECK(aw_obj_group_get(NULL, 0, NULL), RES_BAD_ARG);
+ CHECK(aw_obj_group_get(obj, 0, NULL), RES_BAD_ARG);
+ CHECK(aw_obj_group_get(NULL, AW_ID_NONE, &group), RES_BAD_ARG);
+ CHECK(aw_obj_group_get(obj, AW_ID_NONE, &group), RES_BAD_ARG);
+ CHECK(aw_obj_group_get(NULL, 0, &group), RES_BAD_ARG);
+ CHECK(aw_obj_group_get(obj, 0, &group), RES_OK);
+ CHECK(strcmp(group.name, "default"), 0);
+ CHECK(group.face_id, 0);
+ CHECK(group.faces_count, 1);
}
static void