--- ray/src/util/vwrays.c 2012/06/14 05:19:05 3.17 +++ ray/src/util/vwrays.c 2019/03/04 22:41:20 3.19 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: vwrays.c,v 3.17 2012/06/14 05:19:05 greg Exp $"; +static const char RCSid[] = "$Id: vwrays.c,v 3.19 2019/03/04 22:41:20 greg Exp $"; #endif /* * Compute rays corresponding to a given picture or view. @@ -196,6 +196,12 @@ pix2rays( px += .5; py += .5; loc[0] = px/rs.xr; loc[1] = py/rs.yr; if (zfd >= 0) { + if ((loc[0] < 0) | (loc[0] >= 1) | + (loc[1] < 0) | (loc[1] >= 1)) { + fprintf(stderr, "%s: input pixel outside image\n", + progname); + exit(1); + } loc2pix(pp, &rs, loc[0], loc[1]); if (lseek(zfd, (pp[1]*scanlen(&rs)+pp[0])*sizeof(float), @@ -304,7 +310,7 @@ putf( /* put out ray in float format */ v[0] = ro[0]; v[1] = ro[1]; v[2] = ro[2]; v[3] = rd[0]; v[4] = rd[1]; v[5] = rd[2]; - fwrite(v, sizeof(float), 6, stdout); + putbinary(v, sizeof(float), 6, stdout); } @@ -318,5 +324,5 @@ putd( /* put out ray in double format */ v[0] = ro[0]; v[1] = ro[1]; v[2] = ro[2]; v[3] = rd[0]; v[4] = rd[1]; v[5] = rd[2]; - fwrite(v, sizeof(double), 6, stdout); + putbinary(v, sizeof(double), 6, stdout); }