- for(j=0; j<cm->vattr[CMESH_ATTR_VERTEX].nelem; j++) {
- float *tmp = dynarr_push(cm->vattr[i].data, &cm->cur_val[i].x + j);
- if(!tmp) return -1;
- cm->vattr[i].data = tmp;
+ int newsz = cm->vattr[i].count + cm->vattr[i].nelem;
+ float *tmp = realloc(cm->vattr[i].data, newsz * sizeof *tmp);
+ if(!tmp) return -1;
+ tmp += cm->vattr[i].count;
+
+ cm->vattr[i].data = tmp;
+ cm->vattr[i].count = newsz;
+
+ for(j=0; j<cm->vattr[i].nelem; j++) {
+ *tmp++ = *(&cm->cur_val[i].x + j);