Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 6e83a0d3f625dfdbfee99cc6d414f180 > files > 9

ghostscript-9.04-7.fc15.src.rpm

diff -up ghostscript-9.04/psi/zfapi.c.glyph-crash ghostscript-9.04/psi/zfapi.c
--- ghostscript-9.04/psi/zfapi.c.glyph-crash	2011-08-05 12:12:20.000000000 +0100
+++ ghostscript-9.04/psi/zfapi.c	2011-11-01 13:24:54.334696191 +0000
@@ -1885,34 +1885,35 @@ static int fapi_finish_render_aux(i_ctx_
             /* The server provides an outline instead the raster. */
             gs_imager_state *pis = (gs_imager_state *)pgs->show_gstate;
             gs_point pt;
+            if (!I->skip_glyph) {
+                if ((code = gs_currentpoint(pgs, &pt)) < 0)
+                    return code;
+                if ((code = outline_char(i_ctx_p, I, import_shift_v, penum_s, pgs->path, !pbfont->PaintType)) < 0)
+                    return code;
+                if ((code = gs_imager_setflat((gs_imager_state *)pgs, gs_char_flatness(pis, 1.0))) < 0)
+                    return code;
+                if (pbfont->PaintType) {
+                    float lw = gs_currentlinewidth(pgs);
 
-            if ((code = gs_currentpoint(pgs, &pt)) < 0)
-                return code;
-            if ((code = outline_char(i_ctx_p, I, import_shift_v, penum_s, pgs->path, !pbfont->PaintType)) < 0)
-                return code;
-            if ((code = gs_imager_setflat((gs_imager_state *)pgs, gs_char_flatness(pis, 1.0))) < 0)
-                return code;
-            if (pbfont->PaintType) {
-                float lw = gs_currentlinewidth(pgs);
+                    gs_setlinewidth(pgs, pbfont->StrokeWidth);
+                    code = gs_stroke(pgs);
+                    gs_setlinewidth(pgs, lw);
+                    if (code < 0)
+                        return code;
+                } else {
+                    gs_in_cache_device_t in_cachedevice = pgs->in_cachedevice;
+                    pgs->in_cachedevice = CACHE_DEVICE_NOT_CACHING;
 
-                gs_setlinewidth(pgs, pbfont->StrokeWidth);
-                code = gs_stroke(pgs);
-                gs_setlinewidth(pgs, lw);
-                if (code < 0)
-                    return code;
-            } else {
-                gs_in_cache_device_t in_cachedevice = pgs->in_cachedevice;
-                pgs->in_cachedevice = CACHE_DEVICE_NOT_CACHING;
+                    pgs->fill_adjust.x = pgs->fill_adjust.y = 0;
 
-                pgs->fill_adjust.x = pgs->fill_adjust.y = 0;
+                    if ((code = gs_fill(pgs)) < 0)
+                        return code;
 
-                if ((code = gs_fill(pgs)) < 0)
+                    pgs->in_cachedevice = in_cachedevice;
+                }
+                if ((code = gs_moveto(pgs, pt.x, pt.y)) < 0)
                     return code;
-
-                pgs->in_cachedevice = in_cachedevice;
             }
-            if ((code = gs_moveto(pgs, pt.x, pt.y)) < 0)
-                return code;
         } else {
             int rast_orig_x =   rast.orig_x;
             int rast_orig_y = - rast.orig_y;