From 7ce789271b911714d0dd4e38e17d2bca5573c6a4 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 11 Sep 2006 21:06:05 +0000 Subject: =?UTF-8?q?Bug=20355435=20=E2=80=93=20Invalid=20calls=20to=20pango?= =?UTF-8?q?=5Fmap=5Fget=5Fengine()=20Patch=20from?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2006-09-11 Behdad Esfahbod Bug 355435 – Invalid calls to pango_map_get_engine() Patch from Theppitak Karoonboonyanan * pango/break.c (pango_get_log_attrs): * pango/pango-renderer.c (add_underline): * pango/pangofc-font.c (pango_fc_font_find_shaper): * pango/pangowin32.c (pango_win32_font_find_shaper): * pango/pangox.c (pango_x_font_find_shaper): Pass a PangoScript to pango_map_get_engine, not a gunichar! --- ChangeLog | 12 ++++++++++++ pango/break.c | 9 +++++---- pango/pangofc-font.c | 4 +++- pango/pangowin32.c | 4 +++- pango/pangox.c | 4 +++- 5 files changed, 26 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 24f044a0..94f257d2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2006-09-11 Behdad Esfahbod + + Bug 355435 – Invalid calls to pango_map_get_engine() + Patch from Theppitak Karoonboonyanan + + * pango/break.c (pango_get_log_attrs): + * pango/pango-renderer.c (add_underline): + * pango/pangofc-font.c (pango_fc_font_find_shaper): + * pango/pangowin32.c (pango_win32_font_find_shaper): + * pango/pangox.c (pango_x_font_find_shaper): + Pass a PangoScript to pango_map_get_engine, not a gunichar! + 2006-09-11 Behdad Esfahbod Bug 347146 – underline/overstrike spaces diff --git a/pango/break.c b/pango/break.c index 2006074f..a333c272 100644 --- a/pango/break.c +++ b/pango/break.c @@ -1624,6 +1624,7 @@ pango_get_log_attrs (const char *text, const char *end; PangoEngineLang* range_engine; const char *range_start; + PangoScript script; int chars_in_range; static guint engine_type_id = 0; static guint render_type_id = 0; @@ -1649,8 +1650,8 @@ pango_get_log_attrs (const char *text, lang_map = pango_find_map (language, engine_type_id, render_type_id); range_start = text; - range_engine = (PangoEngineLang*) pango_map_get_engine (lang_map, - g_utf8_get_char (text)); + script = pango_script_for_unichar (g_utf8_get_char (text)); + range_engine = (PangoEngineLang*) pango_map_get_engine (lang_map, script); analysis.lang_engine = range_engine; chars_broken = 0; chars_in_range = 1; @@ -1664,9 +1665,9 @@ pango_get_log_attrs (const char *text, g_assert (range_start <= end); g_assert (end - pos < length); + script = pango_script_for_unichar (g_utf8_get_char (pos)); analysis.lang_engine = - (PangoEngineLang*) pango_map_get_engine (lang_map, - g_utf8_get_char (pos)); + (PangoEngineLang*) pango_map_get_engine (lang_map, script); if (range_engine != analysis.lang_engine) { diff --git a/pango/pangofc-font.c b/pango/pangofc-font.c index b2abb694..5f62f428 100644 --- a/pango/pangofc-font.c +++ b/pango/pangofc-font.c @@ -263,9 +263,11 @@ pango_fc_font_find_shaper (PangoFont *font, guint32 ch) { PangoMap *shaper_map = NULL; + PangoScript script; shaper_map = pango_fc_get_shaper_map (language); - return (PangoEngineShape *)pango_map_get_engine (shaper_map, ch); + script = pango_script_for_unichar (ch); + return (PangoEngineShape *)pango_map_get_engine (shaper_map, script); } static PangoCoverage * diff --git a/pango/pangowin32.c b/pango/pangowin32.c index b0ce7151..71f2ddeb 100644 --- a/pango/pangowin32.c +++ b/pango/pangowin32.c @@ -863,9 +863,11 @@ pango_win32_font_find_shaper (PangoFont *font, guint32 ch) { PangoMap *shape_map = NULL; + PangoScript script; shape_map = pango_win32_get_shaper_map (lang); - return (PangoEngineShape *)pango_map_get_engine (shape_map, ch); + script = pango_script_for_unichar (ch); + return (PangoEngineShape *)pango_map_get_engine (shape_map, script); } /* Utility functions */ diff --git a/pango/pangox.c b/pango/pangox.c index bd7023ec..d39499a0 100644 --- a/pango/pangox.c +++ b/pango/pangox.c @@ -1361,9 +1361,11 @@ pango_x_font_find_shaper (PangoFont *font, guint32 ch) { PangoMap *shape_map = NULL; + PangoScript script; shape_map = pango_x_get_shaper_map (language); - return (PangoEngineShape *)pango_map_get_engine (shape_map, ch); + script = pango_script_for_unichar (ch); + return (PangoEngineShape *)pango_map_get_engine (shape_map, script); } /* Utility functions */ -- cgit v1.2.1