From e6219f7116311d999054dc31df081aa66a0cd2d3 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 22 Oct 2008 17:53:05 +0100 Subject: [PATCH] [win32] Correct error paths in text_to_glyphs(). Carl spotted that 1db894 introduced an error into text_to_glyphs() such that following an allocation error the code would attempt to thaw an unfrozen glyph cache, leading to an attempt to unlock an unlocked mutex - which causes a deadlock under win32. --- src/cairo-win32-font.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/cairo-win32-font.c b/src/cairo-win32-font.c index 7f6d43517..879cfac79 100644 --- a/src/cairo-win32-font.c +++ b/src/cairo-win32-font.c @@ -672,7 +672,8 @@ _cairo_win32_scaled_font_type1_text_to_glyphs (cairo_win32_scaled_font_t *scaled &scaled_glyph); if (status) { free (*glyphs); - goto FAIL3; + *glyphs = NULL; + break; } x = scaled_glyph->x_advance; @@ -682,10 +683,10 @@ _cairo_win32_scaled_font_type1_text_to_glyphs (cairo_win32_scaled_font_t *scaled y_pos += y; } -FAIL3: _cairo_scaled_font_thaw_cache (&scaled_font->base); - cairo_win32_scaled_font_done_font (&scaled_font->base); +FAIL3: + cairo_win32_scaled_font_done_font (&scaled_font->base); FAIL2: free (glyph_indices); FAIL1: