shithub: libobj

Download patch

ref: 7be2c8b1026096abd0bcfc9ea76fcdecaa2b2ea2
parent: 464cd853b0292237c829d72559bb11035130d1bc
author: rodri <rgl@antares-labs.eu>
date: Sun Jun 22 13:14:59 EDT 2025

make objaddvertex() return the vertex index. fix some stuff

--- a/obj.c
+++ b/obj.c
@@ -268,17 +268,18 @@
 	return -1;
 }
 
-static void
+static int
 addvertva(OBJVertexArray *va, OBJVertex v)
 {
-	va->verts = erealloc(va->verts, ++va->nvert*sizeof(OBJVertex));
-	va->verts[va->nvert-1] = v;
+	va->verts = erealloc(va->verts, (va->nvert + 1)*sizeof(OBJVertex));
+	va->verts[va->nvert++] = v;
+	return va->nvert-1;
 }
 
-void
+int
 objaddvertex(OBJ *obj, OBJVertex v, int vtype)
 {
-	addvertva(&obj->vertdata[vtype], v);
+	return addvertva(&obj->vertdata[vtype], v);
 }
 
 void
@@ -309,8 +310,8 @@
 	OBJIndexArray *tab;
 
 	tab = &e->indextab[idxtab];
-	tab->indices = erealloc(tab->indices, ++tab->nindex*sizeof(int));
-	tab->indices[tab->nindex-1] = idx;
+	tab->indices = erealloc(tab->indices, (tab->nindex + 1)*sizeof(int));
+	tab->indices[tab->nindex++] = idx;
 }
 
 void
@@ -1119,17 +1120,17 @@
 			if(m->map_Kd != nil){
 				seprint(pe, bufe, "/%s", m->map_Kd->filename);
 				if(writeimagefile(buf, m->map_Kd->image) < 0)
-					fprint(2, "writeimagefile: %r");
+					fprint(2, "writeimagefile: %r\n");
 			}
 			if(m->map_Ks != nil){
 				seprint(pe, bufe, "/%s", m->map_Ks->filename);
 				if(writeimagefile(buf, m->map_Ks->image) < 0)
-					fprint(2, "writeimagefile: %r");
+					fprint(2, "writeimagefile: %r\n");
 			}
 			if(m->norm != nil){
 				seprint(pe, bufe, "/%s", m->norm->filename);
 				if(writeimagefile(buf, m->norm->image) < 0)
-					fprint(2, "writeimagefile: %r");
+					fprint(2, "writeimagefile: %r\n");
 			}
 		}
 
--- a/obj.h
+++ b/obj.h
@@ -134,7 +134,7 @@
 	OBJMaterlist *materials;
 };
 
-void objaddvertex(OBJ*, OBJVertex, int);
+int objaddvertex(OBJ*, OBJVertex, int);
 void objaddelem(OBJObject*, OBJElem*);
 OBJElem *objallocelem(int);
 void objaddelemidx(OBJElem*, int, int);
--