488 |
|
return RC_FORMERR; |
489 |
|
} |
490 |
|
for (i = 0; i < dp->ninc*dp->nout; i++) { |
491 |
< |
char *sdnext = fskip(sdata); |
491 |
> |
char *sdnext = fskip(sdata); |
492 |
> |
double val; |
493 |
|
if (sdnext == NULL) { |
494 |
|
sprintf(SDerrorDetail, |
495 |
|
"Bad/missing BSDF ScatteringData in '%s'", |
499 |
|
while (isspace(*sdnext)) |
500 |
|
sdnext++; |
501 |
|
if (*sdnext == ',') sdnext++; |
502 |
+ |
if ((val = atof(sdata)) < 0) |
503 |
+ |
val = 0; /* don't allow negative values */ |
504 |
|
if (rowinc) { |
505 |
|
int r = i/dp->nout; |
506 |
|
int c = i - r*dp->nout; |
507 |
< |
mBSDF_value(dp,r,c) = atof(sdata); |
507 |
> |
mBSDF_value(dp,r,c) = val; |
508 |
|
} else |
509 |
< |
dp->bsdf[i] = atof(sdata); |
509 |
> |
dp->bsdf[i] = val; |
510 |
|
sdata = sdnext; |
511 |
|
} |
512 |
|
return get_extrema(df); |