| 573 |
|
while (sc->ndescr > 0) |
| 574 |
|
freeqstr(sc->descr[--sc->ndescr]); |
| 575 |
|
efree((char *)sc->descr); |
| 576 |
+ |
sc->descr = NULL; |
| 577 |
|
sc->ndescr = 0; |
| 578 |
|
} |
| 579 |
|
|
| 748 |
|
return(NULL); |
| 749 |
|
} |
| 750 |
|
/* tighten array & return */ |
| 751 |
< |
return((int *)erealloc((char *)varr, sizeof(int)*(varr[0]+1))); |
| 751 |
> |
return((int *)erealloc(varr, sizeof(int)*(varr[0]+1))); |
| 752 |
|
} |
| 753 |
|
|
| 754 |
|
/* Callback for growBoundingBox() */ |
| 814 |
|
for (i = 0; i < osc->ndescr; i++) |
| 815 |
|
addComment(sc, osc->descr[i]); |
| 816 |
|
if (osc->ngrps > 1) { |
| 817 |
< |
sc->grpname = (char **)erealloc((char *)sc->grpname, |
| 817 |
> |
sc->grpname = (char **)erealloc(sc->grpname, |
| 818 |
|
sizeof(char *) * (osc->ngrps+(CHUNKSIZ-1))); |
| 819 |
|
for (i = 1; i < osc->ngrps; i++) |
| 820 |
|
sc->grpname[i] = savqstr(osc->grpname[i]); |
| 821 |
|
sc->ngrps = osc->ngrps; |
| 822 |
|
} |
| 823 |
|
if (osc->nmats > 1) { |
| 824 |
< |
sc->matname = (char **)erealloc((char *)sc->matname, |
| 824 |
> |
sc->matname = (char **)erealloc(sc->matname, |
| 825 |
|
sizeof(char *) * (osc->nmats+(CHUNKSIZ-1))); |
| 826 |
|
for (i = 1; i < osc->nmats; i++) |
| 827 |
|
sc->matname[i] = savqstr(osc->matname[i]); |
| 894 |
|
} |
| 895 |
|
tex_off = scdst->ntex; /* append texture coords */ |
| 896 |
|
if (scsrc->ntex > 0) { |
| 897 |
< |
scdst->tex = (TexCoord *)erealloc((char *)scdst->tex, |
| 897 |
> |
scdst->tex = (TexCoord *)erealloc(scdst->tex, |
| 898 |
|
sizeof(TexCoord)*(tex_off+scsrc->ntex+(CHUNKSIZ-1))); |
| 899 |
|
memcpy(scdst->tex+tex_off, scsrc->tex, |
| 900 |
|
sizeof(TexCoord)*scsrc->ntex); |
| 901 |
|
} |
| 902 |
|
norm_off = scdst->nnorms; /* append normals */ |
| 903 |
|
if (scsrc->nnorms > 0) { |
| 904 |
< |
scdst->norm = (Normal *)erealloc((char *)scdst->norm, |
| 904 |
> |
scdst->norm = (Normal *)erealloc(scdst->norm, |
| 905 |
|
sizeof(Normal)*(norm_off+scsrc->nnorms+(CHUNKSIZ-1))); |
| 906 |
|
memcpy(scdst->norm+norm_off, scsrc->norm, |
| 907 |
|
sizeof(Normal)*scsrc->nnorms); |
| 916 |
|
if (f->nv > vllen) { |
| 917 |
|
vlist = (VNDX *)( vlist == my_vlist ? |
| 918 |
|
emalloc(sizeof(VNDX)*f->nv) : |
| 919 |
< |
erealloc((char *)vlist, sizeof(VNDX)*f->nv) ); |
| 919 |
> |
erealloc(vlist, sizeof(VNDX)*f->nv) ); |
| 920 |
|
vllen = f->nv; |
| 921 |
|
} |
| 922 |
|
memset(vlist, 0xff, sizeof(VNDX)*f->nv); |
| 931 |
|
fcnt += (addFace(scdst, vlist, f->nv) != NULL); |
| 932 |
|
} |
| 933 |
|
/* clean up */ |
| 934 |
< |
if (vlist != my_vlist) efree((char *)vlist); |
| 935 |
< |
efree((char *)vert_map); |
| 934 |
> |
if (vlist != my_vlist) efree(vlist); |
| 935 |
> |
efree(vert_map); |
| 936 |
|
return(fcnt); |
| 937 |
|
} |
| 938 |
|
|
| 1043 |
|
} |
| 1044 |
|
if (nused == sc->nverts) |
| 1045 |
|
goto skip_pos; |
| 1046 |
< |
sc->vert = (Vertex *)erealloc((char *)sc->vert, |
| 1046 |
> |
sc->vert = (Vertex *)erealloc(sc->vert, |
| 1047 |
|
sizeof(Vertex)*(nused+(CHUNKSIZ-1))); |
| 1048 |
|
sc->nverts = nused; |
| 1049 |
|
for (f = sc->flist; f != NULL; f = f->next) |
| 1069 |
|
} |
| 1070 |
|
if (nused == sc->ntex) |
| 1071 |
|
goto skip_tex; |
| 1072 |
< |
sc->tex = (TexCoord *)erealloc((char *)sc->tex, |
| 1072 |
> |
sc->tex = (TexCoord *)erealloc(sc->tex, |
| 1073 |
|
sizeof(TexCoord)*(nused+(CHUNKSIZ-1))); |
| 1074 |
|
sc->ntex = nused; |
| 1075 |
|
for (f = sc->flist; f != NULL; f = f->next) |
| 1094 |
|
} |
| 1095 |
|
if (nused == sc->nnorms) |
| 1096 |
|
goto skip_norms; |
| 1097 |
< |
sc->norm = (Normal *)erealloc((char *)sc->norm, |
| 1097 |
> |
sc->norm = (Normal *)erealloc(sc->norm, |
| 1098 |
|
sizeof(Normal)*(nused+(CHUNKSIZ-1))); |
| 1099 |
|
sc->nnorms = nused; |
| 1100 |
|
for (f = sc->flist; f != NULL; f = f->next) |
| 1103 |
|
f->v[i].nid = vmap[f->v[i].nid]; |
| 1104 |
|
skip_norms: |
| 1105 |
|
/* clean up */ |
| 1106 |
< |
efree((char *)vmap); |
| 1106 |
> |
efree(vmap); |
| 1107 |
|
} |
| 1108 |
|
|
| 1109 |
|
/* Free a scene */ |
| 1118 |
|
clearComments(sc); |
| 1119 |
|
for (i = sc->ngrps; i-- > 0; ) |
| 1120 |
|
freeqstr(sc->grpname[i]); |
| 1121 |
< |
efree((char *)sc->grpname); |
| 1121 |
> |
efree(sc->grpname); |
| 1122 |
|
for (i = sc->nmats; i-- > 0; ) |
| 1123 |
|
freeqstr(sc->matname[i]); |
| 1124 |
< |
efree((char *)sc->matname); |
| 1125 |
< |
efree((char *)sc->vert); |
| 1126 |
< |
efree((char *)sc->tex); |
| 1127 |
< |
efree((char *)sc->norm); |
| 1124 |
> |
efree(sc->matname); |
| 1125 |
> |
efree(sc->vert); |
| 1126 |
> |
efree(sc->tex); |
| 1127 |
> |
efree(sc->norm); |
| 1128 |
|
while ((f = sc->flist) != NULL) { |
| 1129 |
|
sc->flist = f->next; |
| 1130 |
< |
efree((char *)f); |
| 1130 |
> |
efree(f); |
| 1131 |
|
} |
| 1132 |
< |
efree((char *)sc); |
| 1132 |
> |
efree(sc); |
| 1133 |
|
} |