--- ray/src/gen/xform.c 2005/12/28 18:35:42 2.39 +++ ray/src/gen/xform.c 2011/06/22 17:05:00 2.45 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: xform.c,v 2.39 2005/12/28 18:35:42 greg Exp $"; +static const char RCSid[] = "$Id: xform.c,v 2.45 2011/06/22 17:05:00 greg Exp $"; #endif /* * xform.c - program to transform object files. @@ -182,7 +182,7 @@ doargf( /* take argument list from file */ int inquote; char *newav[256], **avp; char argbuf[2048]; - char newid[128]; + char *newid, newidbuf[128]; char *oldid; register char *cp; FILE *argfp; @@ -258,10 +258,16 @@ doargf( /* take argument list from file */ for (i = fi+2; i < ac; i++) avp[newac++] = av[i]; avp[newac] = NULL; + newid = newidbuf; oldid = NULL; for (i = 2; i < newac; i++) if (!strcmp(avp[i-1], "-n")) { oldid = avp[i]; + if (strlen(oldid)+32 > sizeof(newidbuf)) { + newid = (char *)malloc(strlen(oldid)+32); + if (newid == NULL) + exit(2); + } avp[i] = newid; break; } @@ -277,6 +283,8 @@ doargf( /* take argument list from file */ else sprintf(newid, "%s.%d", oldid, k); err |= main(newac, avp); + if (newid != newidbuf) + free((void *)newid); k++; } fclose(argfp); @@ -921,6 +929,7 @@ initotypes(void) /* initialize ofun[] array */ tinvers[OBJ_CYLINDER] = OBJ_TUBE; tinvers[OBJ_TUBE] = OBJ_CYLINDER; tinvers[OBJ_INSTANCE] = OBJ_INSTANCE; /* oh, well */ + tinvers[OBJ_MESH] = OBJ_MESH; /* ditto */ }