diff options
author | Glenn Kennard <glenn.kennard@gmail.com> | 2008-04-09 19:00:18 +0200 |
---|---|---|
committer | Glenn Kennard <glenn.kennard@gmail.com> | 2008-04-09 19:00:18 +0200 |
commit | 547ae947fbc9110f963f729c9b9706a5cf047bd3 (patch) | |
tree | 9fb21aaaaaefcdd454ddb2109bc956f848d62241 /raster/meshdraw.c | |
parent | 1b911e8b0a49be3e65fdbb7dc094ea09b477e7a9 (diff) | |
download | mupdf-547ae947fbc9110f963f729c9b9706a5cf047bd3.tar.xz |
Check for NaN in fz_rendershade.
Fixes crash rendering chinesopera.pdf
Diffstat (limited to 'raster/meshdraw.c')
-rw-r--r-- | raster/meshdraw.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/raster/meshdraw.c b/raster/meshdraw.c index c0d798e6..2c6d2c99 100644 --- a/raster/meshdraw.c +++ b/raster/meshdraw.c @@ -358,12 +358,16 @@ fz_rendershade(fz_shade *shade, fz_matrix ctm, fz_colorspace *destcs, fz_pixmap p.x = shade->mesh[(i * 3 + k) * n + 0]; p.y = shade->mesh[(i * 3 + k) * n + 1]; p = fz_transformpoint(ctm, p); + if (isnan(p.y) || isnan(p.x)) // How is this happening? + goto baddata; tri[k][0] = p.x; tri[k][1] = p.y; for (j = 2; j < n; j++) tri[k][j] = shade->mesh[( i * 3 + k) * n + j] * 255; } fz_drawtriangle(temp, tri[0], tri[1], tri[2], n); + baddata: + ; } if (shade->usefunction) |