From dfee909d51aa62d731512d6a66ad3d7478c41089 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Wed, 26 Jan 2005 06:49:16 +0000 Subject: [PATCH] Fix access to uninitialized data key must be first element in cache entry --- ChangeLog | 8 ++++++++ src/cairo-ft-font.c | 4 +++- src/cairo-xlib-surface.c | 2 +- src/cairo_ft_font.c | 4 +++- src/cairo_xlib_surface.c | 2 +- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index e1f81ce7a..0e7c3d410 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-01-26 Alexander Larsson + + * src/cairo_ft_font.c: (_ft_unscaled_font_set_scale): + Fix access to uninitialized data + + * src/cairo_xlib_surface.c: + key must be first element in cache entry + 2005-01-25 David Reveman * AUTHORS: Update mail address. diff --git a/src/cairo-ft-font.c b/src/cairo-ft-font.c index 036ad98c6..a51b25b8c 100644 --- a/src/cairo-ft-font.c +++ b/src/cairo-ft-font.c @@ -445,12 +445,14 @@ _ft_unscaled_font_set_scale (ft_unscaled_font_t *unscaled, assert (unscaled->face != NULL); - if (scale->matrix[0][0] == unscaled->current_scale.matrix[0][0] && + if (unscaled->have_scale && + scale->matrix[0][0] == unscaled->current_scale.matrix[0][0] && scale->matrix[0][1] == unscaled->current_scale.matrix[0][1] && scale->matrix[1][0] == unscaled->current_scale.matrix[1][0] && scale->matrix[1][1] == unscaled->current_scale.matrix[1][1]) return; + unscaled->have_scale = 1; unscaled->current_scale = *scale; _compute_transform (&sf, scale); diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c index 91996053b..074ae8af4 100644 --- a/src/cairo-xlib-surface.c +++ b/src/cairo-xlib-surface.c @@ -823,10 +823,10 @@ typedef struct glyphset_cache { } glyphset_cache_t; typedef struct { - int refcount; cairo_glyph_cache_key_t key; Glyph glyph; XGlyphInfo info; + int refcount; } glyphset_cache_entry_t; static Glyph diff --git a/src/cairo_ft_font.c b/src/cairo_ft_font.c index 036ad98c6..a51b25b8c 100644 --- a/src/cairo_ft_font.c +++ b/src/cairo_ft_font.c @@ -445,12 +445,14 @@ _ft_unscaled_font_set_scale (ft_unscaled_font_t *unscaled, assert (unscaled->face != NULL); - if (scale->matrix[0][0] == unscaled->current_scale.matrix[0][0] && + if (unscaled->have_scale && + scale->matrix[0][0] == unscaled->current_scale.matrix[0][0] && scale->matrix[0][1] == unscaled->current_scale.matrix[0][1] && scale->matrix[1][0] == unscaled->current_scale.matrix[1][0] && scale->matrix[1][1] == unscaled->current_scale.matrix[1][1]) return; + unscaled->have_scale = 1; unscaled->current_scale = *scale; _compute_transform (&sf, scale); diff --git a/src/cairo_xlib_surface.c b/src/cairo_xlib_surface.c index 91996053b..074ae8af4 100644 --- a/src/cairo_xlib_surface.c +++ b/src/cairo_xlib_surface.c @@ -823,10 +823,10 @@ typedef struct glyphset_cache { } glyphset_cache_t; typedef struct { - int refcount; cairo_glyph_cache_key_t key; Glyph glyph; XGlyphInfo info; + int refcount; } glyphset_cache_entry_t; static Glyph