[evince] [dvi] Test glyph->data for MDVI_GLYPH_EMPTY



commit 9f258bd6009e1ae92579cf159d81ad8c28280666
Author: Marek Kasik <mkasik redhat com>
Date:   Tue Aug 3 09:27:42 2010 +0200

    [dvi] Test glyph->data for MDVI_GLYPH_EMPTY
    
    MDVI marks empty glyphs by setting its data pointer to 0x1
    (MDVI_GLYPH_EMPTY constant) but it doesn't check for the
    emptiness sometimes. Fixes bug #600552.

 backend/dvi/cairo-device.c  |    4 +++-
 backend/dvi/mdvi-lib/font.c |    4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)
---
diff --git a/backend/dvi/cairo-device.c b/backend/dvi/cairo-device.c
index 9a8ca0e..47425ca 100644
--- a/backend/dvi/cairo-device.c
+++ b/backend/dvi/cairo-device.c
@@ -55,7 +55,9 @@ dvi_cairo_draw_glyph (DviContext  *dvi,
 
 	glyph = &ch->grey;
 
-	isbox = (glyph->data == NULL || (dvi->params.flags & MDVI_PARAM_CHARBOXES));
+	isbox = (glyph->data == NULL ||
+	         (dvi->params.flags & MDVI_PARAM_CHARBOXES) ||
+	         MDVI_GLYPH_ISEMPTY (glyph->data));
 
 	x = - glyph->x + x0 + cairo_device->xmargin;
 	y = - glyph->y + y0 + cairo_device->ymargin;
diff --git a/backend/dvi/mdvi-lib/font.c b/backend/dvi/mdvi-lib/font.c
index 2d488d6..2f655df 100644
--- a/backend/dvi/mdvi-lib/font.c
+++ b/backend/dvi/mdvi-lib/font.c
@@ -379,10 +379,12 @@ again:
 		return ch;
 	} else if(MDVI_ENABLED(dvi, MDVI_PARAM_ANTIALIASED)) {
 		if(ch->grey.data && 
+		   !MDVI_GLYPH_ISEMPTY(ch->grey.data) &&
 		   ch->fg == dvi->curr_fg && 
 		   ch->bg == dvi->curr_bg)
 		   	return ch;
-		if(ch->grey.data) {
+		if(ch->grey.data &&
+		   !MDVI_GLYPH_ISEMPTY(ch->grey.data)) {
 			if(dvi->device.free_image)
 				dvi->device.free_image(ch->grey.data);
 			ch->grey.data = NULL;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]