[Bug 905276] New: pango_fc infinite recursion

bugzilla at redhat.com bugzilla at redhat.com
Tue Jan 29 03:07:33 UTC 2013


Product: Fedora
https://bugzilla.redhat.com/show_bug.cgi?id=905276

            Bug ID: 905276
           Summary: pango_fc infinite recursion
           Product: Fedora
           Version: rawhide
         Component: pango
          Severity: high
          Priority: unspecified
          Reporter: orion at cora.nwra.com

Description of problem:

See http://osdir.com/ml/commits.gnome/2013-01/msg05014.html

I'm seeing this trying to build plplot for rawhide.

commit 10cc6557ba24239570ee9a7bcaa0a553aae9df95
Author: Behdad Esfahbod <behdad at xxxxxxxxxx>
Date: Thu Jan 17 17:11:19 2013 -0600

Revert "Don't use the deprecated pango_ft2_font_get_face"

This reverts commit 2dc0c3dbb1c389c3a3ba12a5c5c85f21dca46e84.

This doesn't make sense. It ends up in infinite recursion because
pangofc is calling lock_face on pangoft2, which would recursively
call it on pangofc...

Was causing hang at startup of Inkscape.

If the deprecated warnings are an issue, they need to be dealt with
in some other way.

pango/pangoft2-render.c | 6 +-----
pango/pangoft2.c | 17 +++++------------
2 files changed, 6 insertions(+), 17 deletions(-)
---
diff --git a/pango/pangoft2-render.c b/pango/pangoft2-render.c
index 60cf432..42923f4 100644
--- a/pango/pangoft2-render.c
+++ b/pango/pangoft2-render.c
@@ -210,7 +210,7 @@ pango_ft2_font_render_glyph (PangoFont *font,
return box;
}

- face = pango_fc_font_lock_face (PANGO_FC_FONT (font));
+ face = pango_ft2_font_get_face (font);

if (face)
{
@@ -231,8 +231,6 @@ pango_ft2_font_render_glyph (PangoFont *font,
rendered->bitmap_left = face->glyph->bitmap_left;
rendered->bitmap_top = face->glyph->bitmap_top;

- pango_fc_font_unlock_face (PANGO_FC_FONT (font));
-
if (G_UNLIKELY (!rendered->bitmap.buffer)) {
g_slice_free (PangoFT2RenderedGlyph, rendered);
return NULL;
@@ -242,8 +240,6 @@ pango_ft2_font_render_glyph (PangoFont *font,
}
else
{
- pango_fc_font_unlock_face (PANGO_FC_FONT (font));
-
generic_box:
return pango_ft2_font_render_box_glyph (PANGO_UNKNOWN_GLYPH_WIDTH,
PANGO_UNKNOWN_GLYPH_HEIGHT,
diff --git a/pango/pangoft2.c b/pango/pangoft2.c
index cbe1d21..dc6db5d 100644
--- a/pango/pangoft2.c
+++ b/pango/pangoft2.c
@@ -424,13 +424,12 @@ pango_ft2_font_get_kerning (PangoFont *font,
static FT_Face
pango_ft2_font_real_lock_face (PangoFcFont *font)
{
- return pango_fc_font_lock_face (font);
+ return pango_ft2_font_get_face ((PangoFont *)font);
}

static void
-pango_ft2_font_real_unlock_face (PangoFcFont *font)
+pango_ft2_font_real_unlock_face (PangoFcFont *font G_GNUC_UNUSED)
{
- pango_fc_font_unlock_face (font);
}

static gboolean
@@ -500,18 +499,12 @@ pango_ft2_font_get_coverage (PangoFont *font,
PangoGlyph
pango_ft2_get_unknown_glyph (PangoFont *font)
{
- PangoFcFont *fc_font = PANGO_FC_FONT (font);
- FT_Face face;
- PangoGlyph glyph;
-
- face = pango_fc_font_lock_face (fc_font);
+ FT_Face face = pango_ft2_font_get_face (font);
if (face && FT_IS_SFNT (face))
/* TrueType fonts have an 'unknown glyph' box on glyph index 0 */
- glyph = 0;
+ return 0;
else
- glyph = PANGO_GLYPH_EMPTY;
- pango_fc_font_unlock_face (fc_font);
- return glyph;
+ return PANGO_GLYPH_EMPTY;
}

typedef struct

Version-Release number of selected component (if applicable):
pango-1.32.6-1.fc19

How reproducible:
Every time

Steps to Reproduce:
1. Build plplot rpm
2. psttsc test fails

-- 
You are receiving this mail because:
You are on the CC list for the bug.
Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=0il7R3xaN7&a=cc_unsubscribe


More information about the fonts-bugs mailing list