e392a9d
diff -up ghostscript-8.62/src/gdevbbox.c.r8591 ghostscript-8.62/src/gdevbbox.c
e392a9d
--- ghostscript-8.62/src/gdevbbox.c.r8591	2007-09-25 14:31:24.000000000 +0100
e392a9d
+++ ghostscript-8.62/src/gdevbbox.c	2008-06-23 12:56:33.000000000 +0100
e392a9d
@@ -755,7 +755,21 @@ bbox_fill_path(gx_device * dev, const gs
e392a9d
 	 dev_proc(tdev, fill_path));
e392a9d
     int code;
e392a9d
 
e392a9d
-    if (!GX_DC_IS_TRANSPARENT(pdevc, bdev) && !gx_path_is_void(ppath)) {
e392a9d
+    if (ppath == NULL) {
e392a9d
+	/* A special handling of shfill with no path. */
e392a9d
+	gs_fixed_rect ibox;
e392a9d
+	gs_fixed_point adjust;
e392a9d
+
e392a9d
+	if (pcpath == NULL)
e392a9d
+	    return 0;
e392a9d
+	gx_cpath_inner_box(pcpath, &ibox);
e392a9d
+	adjust = params->adjust;
e392a9d
+	if (params->fill_zero_width)
e392a9d
+	    gx_adjust_if_empty(&ibox, &adjust);
e392a9d
+	adjust_box(&ibox, adjust);
e392a9d
+	BBOX_ADD_RECT(bdev, ibox.p.x, ibox.p.y, ibox.q.x, ibox.q.y);
e392a9d
+	return 0;
e392a9d
+    } else if (!GX_DC_IS_TRANSPARENT(pdevc, bdev) && !gx_path_is_void(ppath)) {
e392a9d
 	gs_fixed_rect ibox;
e392a9d
 	gs_fixed_point adjust;
e392a9d