378 |
|
fp = stdin; |
379 |
|
else if (inspec[0] == '!') |
380 |
|
fp = popen(inspec+1, "r"); |
381 |
< |
else { |
382 |
< |
const char *sp = inspec; /* check suffix */ |
383 |
< |
while (*sp) |
384 |
< |
++sp; |
385 |
< |
while (sp > inspec && sp[-1] != '.') |
386 |
< |
--sp; |
387 |
< |
if (!strcasecmp(sp, "XML")) { /* assume it's a BSDF */ |
381 |
> |
else { /* check suffix */ |
382 |
> |
const char *sp = strrchr(inspec, '.'); |
383 |
> |
if (sp > inspec && !strcasecmp(sp+1, "XML")) { /* BSDF? */ |
384 |
|
CMATRIX *cm = rmp==RMPnone ? (CMATRIX *)NULL : |
385 |
|
rmp==RMPtrans ? cm_loadBTDF(inspec) : |
386 |
|
cm_loadBRDF(inspec, rmp==RMPreflB) ; |
498 |
|
SCOLOR scol; |
499 |
|
int j, k; |
500 |
|
|
501 |
< |
if (nc < 3) return(0); |
501 |
> |
if ((nc < 3) | (nc > MAXCSAMP)) return(0); |
502 |
|
scan = (uby8 *)tempbuffer((nc+1)*len); |
503 |
|
if (!scan) return(0); |
504 |
|
for (j = 0; j < len; j++, dp += nc) { |
944 |
|
int i, j; |
945 |
|
CMATRIX *cnew; |
946 |
|
|
947 |
< |
if (!rm || !rm->mtx | (rm->ncomp == 2)) |
947 |
> |
if (!rm || !rm->mtx | (rm->ncomp == 2) | (rm->ncomp > MAXCSAMP)) |
948 |
|
return(NULL); |
949 |
|
cnew = cm_alloc(rm->nrows, rm->ncols); |
950 |
|
if (!cnew) |