summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Kennard <glenn.kennard@gmail.com>2008-04-09 19:00:18 +0200
committerGlenn Kennard <glenn.kennard@gmail.com>2008-04-09 19:00:18 +0200
commit547ae947fbc9110f963f729c9b9706a5cf047bd3 (patch)
tree9fb21aaaaaefcdd454ddb2109bc956f848d62241
parent1b911e8b0a49be3e65fdbb7dc094ea09b477e7a9 (diff)
downloadmupdf-547ae947fbc9110f963f729c9b9706a5cf047bd3.tar.xz
Check for NaN in fz_rendershade.
Fixes crash rendering chinesopera.pdf
-rw-r--r--raster/meshdraw.c4
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)