summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2006-02-21 10:12:02 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2006-02-21 10:12:02 +0000
commit64691f1398152413f91ebe6906806eb9eb8801b1 (patch)
tree31b205b6594685a7b24de8acb7b23d4b94f7a48b
parenta8f4e10b37a927543dfebe1a37a4d33463a209fc (diff)
downloadpango-64691f1398152413f91ebe6906806eb9eb8801b1.tar.gz
Change g_critical to g_warning. We already handle them gracefully.
2006-02-21 Behdad Esfahbod <behdad@gnome.org> * pango/fonts.c, pango/glyphstring.c, pango/pango-fontmap.c, pango/pango-ot-buffer.c, pango/pangocairo-font.c, pango/pangoft2.c, pango/pangoxft-font.c, pango/shape.c: Change g_critical to g_warning. We already handle them gracefully. Bug 331994 – --disable-debug removes G_DISABLE_CAST_CHECKS Patch from charlet@act-europe.fr * configure.in: Do not lose PANGO_DEBUG_FLAGS when reassigning. Bug 331995 – pango_layout_set_text optimization Patch from charlet@act-europe.fr * pango/pango-layout.c: Do not validate input text if asserts are disabled. Moreover, do not truncate input text on invalid sequence. Bug 331996 – avoid crashes in win32 font handling Patch from charlet@act-europe.fr * pango/pangofc-fontmap.c, pango/pangowin32-fontmap.c, pango/pangowin32.c: if (!font) return NULL in a number of places.
-rw-r--r--ChangeLog24
-rw-r--r--configure.in2
-rw-r--r--pango/fonts.c2
-rw-r--r--pango/glyphstring.c2
-rw-r--r--pango/pango-fontmap.c5
-rw-r--r--pango/pango-layout.c17
-rw-r--r--pango/pango-ot-buffer.c2
-rw-r--r--pango/pangoatsui-fontmap.c1
-rw-r--r--pango/pangocairo-font.c2
-rw-r--r--pango/pangofc-fontmap.c9
-rw-r--r--pango/pangoft2.c2
-rw-r--r--pango/pangowin32-fontmap.c4
-rw-r--r--pango/pangowin32.c3
-rw-r--r--pango/pangoxft-font.c2
-rw-r--r--pango/shape.c5
15 files changed, 58 insertions, 24 deletions
diff --git a/ChangeLog b/ChangeLog
index 0c26939b..185e4b2c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2006-02-21 Behdad Esfahbod <behdad@gnome.org>
+
+ * pango/fonts.c, pango/glyphstring.c, pango/pango-fontmap.c,
+ pango/pango-ot-buffer.c, pango/pangocairo-font.c, pango/pangoft2.c,
+ pango/pangoxft-font.c, pango/shape.c: Change g_critical to g_warning.
+ We already handle them gracefully.
+
+ Bug 331994 – --disable-debug removes G_DISABLE_CAST_CHECKS
+ Patch from charlet@act-europe.fr
+
+ * configure.in: Do not lose PANGO_DEBUG_FLAGS when reassigning.
+
+ Bug 331995 – pango_layout_set_text optimization
+ Patch from charlet@act-europe.fr
+
+ * pango/pango-layout.c: Do not validate input text if asserts are
+ disabled. Moreover, do not truncate input text on invalid sequence.
+
+ Bug 331996 – avoid crashes in win32 font handling
+ Patch from charlet@act-europe.fr
+
+ * pango/pangofc-fontmap.c, pango/pangowin32-fontmap.c,
+ pango/pangowin32.c: if (!font) return NULL in a number of places.
+
2006-02-17 Behdad Esfahbod <behdad@gnome.org>
Bug 329148 – pango_glyph_item_split: assertion `split_index > 0' failed
diff --git a/configure.in b/configure.in
index 8927289f..ab3252e7 100644
--- a/configure.in
+++ b/configure.in
@@ -173,7 +173,7 @@ else
PANGO_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
if test "x$enable_debug" = "xno"; then
- PANGO_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
+ PANGO_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS $PANGO_DEBUG_FLAGS"
fi
fi
diff --git a/pango/fonts.c b/pango/fonts.c
index 79d237e9..c9ae0555 100644
--- a/pango/fonts.c
+++ b/pango/fonts.c
@@ -1172,7 +1172,7 @@ pango_font_get_glyph_extents (PangoFont *font,
if (!_pango_warning_history.get_glyph_extents)
{
_pango_warning_history.get_glyph_extents = TRUE;
- g_critical ("pango_font_get_glyph_extents called with bad font, expect ugly output");
+ g_warning ("pango_font_get_glyph_extents called with bad font, expect ugly output");
}
if (ink_rect)
{
diff --git a/pango/glyphstring.c b/pango/glyphstring.c
index fc677c3a..e28abbd0 100644
--- a/pango/glyphstring.c
+++ b/pango/glyphstring.c
@@ -67,7 +67,7 @@ pango_glyph_string_set_size (PangoGlyphString *string, gint new_len)
if (string->space < 0)
{
- g_critical ("glyph string length overflows maximum integer size, truncated");
+ g_warning ("glyph string length overflows maximum integer size, truncated");
new_len = string->space = G_MAXINT - 8;
}
}
diff --git a/pango/pango-fontmap.c b/pango/pango-fontmap.c
index 2d97a16b..409da2f9 100644
--- a/pango/pango-fontmap.c
+++ b/pango/pango-fontmap.c
@@ -236,10 +236,11 @@ pango_font_map_real_load_fontset (PangoFontMap *fontmap,
pango_font_description_free (tmp_desc);
- /* Everything failed, we are screwed, there is no way to continue
+ /* Everything failed, we are screwed, there is no way to continue,
+ * but lets just not crash here.
*/
if (pango_fontset_simple_size (fonts) == 0)
- g_critical ("All font fallbacks failed!!!!");
+ g_warning ("All font fallbacks failed!!!!");
return PANGO_FONTSET (fonts);
}
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index f6e69edf..b7a0e3eb 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -819,7 +819,6 @@ pango_layout_set_text (PangoLayout *layout,
const char *text,
int length)
{
- const char *end;
char *old_text;
g_return_if_fail (layout != NULL);
@@ -827,16 +826,20 @@ pango_layout_set_text (PangoLayout *layout,
old_text = layout->text;
+ if (length < 0)
+ length = strlen (text);
+
+#ifndef G_DISABLE_ASSERT
if (length != 0)
{
+ const char *end;
if (!g_utf8_validate (text, length, &end))
- g_warning ("Invalid UTF-8 string passed to pango_layout_set_text()");
-
- while (end - text > G_MAXINT)
- end = g_utf8_prev_char (end);
-
- length = end - text;
+ {
+ /* TODO: Write out the beginning excerpt of text? */
+ g_warning ("Invalid UTF-8 string passed to pango_layout_set_text()");
+ }
}
+#endif
/* NULL-terminate the text for convenience.
*/
diff --git a/pango/pango-ot-buffer.c b/pango/pango-ot-buffer.c
index 275cce6a..bfe10d37 100644
--- a/pango/pango-ot-buffer.c
+++ b/pango/pango-ot-buffer.c
@@ -50,7 +50,7 @@ pango_ot_buffer_new (PangoFcFont *font)
FT_Face face = pango_fc_font_lock_face (font);
if (otl_buffer_new (face->memory, &buffer->buffer) != FT_Err_Ok)
- g_critical ("Allocation of OTLBuffer failed"); /* this doesn't happen */
+ g_warning ("Allocation of OTLBuffer failed"); /* this doesn't happen */
buffer->font = g_object_ref (font);
buffer->applied_gpos = FALSE;
diff --git a/pango/pangoatsui-fontmap.c b/pango/pangoatsui-fontmap.c
index e61637fc..340334a3 100644
--- a/pango/pangoatsui-fontmap.c
+++ b/pango/pangoatsui-fontmap.c
@@ -591,6 +591,7 @@ pango_atsui_font_map_load_font (PangoFontMap *fontmap,
if (best_font)
pango_atsui_font_map_add (atsuifontmap, context, best_font);
+ /* TODO: Handle the else case here. */
}
pango_font_description_free (best_desc);
diff --git a/pango/pangocairo-font.c b/pango/pangocairo-font.c
index ef03d68a..1e8112c4 100644
--- a/pango/pangocairo-font.c
+++ b/pango/pangocairo-font.c
@@ -78,7 +78,7 @@ _pango_cairo_font_install (PangoCairoFont *font,
if (!_pango_cairo_warning_history.font_install)
{
_pango_cairo_warning_history.font_install = TRUE;
- g_critical ("_pango_cairo_font_install called with bad font, expect ugly output");
+ g_warning ("_pango_cairo_font_install called with bad font, expect ugly output");
cairo_set_font_face (cr, NULL);
}
return FALSE;
diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c
index 8b395987..654edbe2 100644
--- a/pango/pangofc-fontmap.c
+++ b/pango/pangofc-fontmap.c
@@ -850,12 +850,6 @@ pango_fc_font_map_new_font (PangoFontMap *fontmap,
PangoFcFont *fcfont;
GSList *l;
- /* Returning NULL here actually violates a contract
- * that loading load_font() will never return NULL.
- * We probably should actually create a dummy
- * font that doesn't draw anything and has empty
- * metrics.
- */
if (priv->closed)
return NULL;
@@ -904,6 +898,9 @@ pango_fc_font_map_new_font (PangoFontMap *fontmap,
FcPatternDestroy (pattern);
}
+ if (!fcfont)
+ return NULL;
+
pango_fc_font_map_add (fcfontmap, context, fcfont);
/*
diff --git a/pango/pangoft2.c b/pango/pangoft2.c
index 9c245d15..fa5a135f 100644
--- a/pango/pangoft2.c
+++ b/pango/pangoft2.c
@@ -178,7 +178,7 @@ pango_ft2_font_get_face (PangoFont *font)
if (!_pango_ft2_warning_history.get_face)
{
_pango_ft2_warning_history.get_face = TRUE;
- g_critical ("pango_ft2_font_get_face called with bad font, expect ugly output");
+ g_warning ("pango_ft2_font_get_face called with bad font, expect ugly output");
}
return NULL;
}
diff --git a/pango/pangowin32-fontmap.c b/pango/pangowin32-fontmap.c
index 1fd5be7b..8949a54a 100644
--- a/pango/pangowin32-fontmap.c
+++ b/pango/pangowin32-fontmap.c
@@ -447,6 +447,7 @@ pango_win32_font_map_load_font (PangoFontMap *fontmap,
result = PANGO_WIN32_FONT_MAP_GET_CLASS (win32fontmap)->find_font (win32fontmap, context,
best_match,
description);
+ /* TODO: Handle the case that result == NULL. */
else
PING(("no best match!"));
}
@@ -487,6 +488,9 @@ pango_win32_font_map_real_find_font (PangoWin32FontMap *win32fontmap,
}
win32font = pango_win32_font_new (fontmap, &face->logfont, size);
+
+ if (!win32font)
+ return NULL;
win32font->fontmap = fontmap;
win32font->win32face = face;
diff --git a/pango/pangowin32.c b/pango/pangowin32.c
index 28e60718..2772700c 100644
--- a/pango/pangowin32.c
+++ b/pango/pangowin32.c
@@ -85,6 +85,9 @@ pango_win32_get_hfont (PangoFont *font)
PangoWin32FontCache *cache;
TEXTMETRIC tm;
+ if (!win32font)
+ return NULL;
+
if (!win32font->hfont)
{
cache = pango_win32_font_map_get_font_cache (win32font->fontmap);
diff --git a/pango/pangoxft-font.c b/pango/pangoxft-font.c
index 3df873b6..fe3844fb 100644
--- a/pango/pangoxft-font.c
+++ b/pango/pangoxft-font.c
@@ -473,7 +473,7 @@ pango_xft_font_get_font (PangoFont *font)
if (!_pango_xft_warning_history.get_font)
{
_pango_xft_warning_history.get_font = TRUE;
- g_critical ("pango_xft_font_get_font called with bad font, expect ugly output");
+ g_warning ("pango_xft_font_get_font called with bad font, expect ugly output");
}
return NULL;
}
diff --git a/pango/shape.c b/pango/shape.c
index aa712192..50479b5e 100644
--- a/pango/shape.c
+++ b/pango/shape.c
@@ -73,6 +73,7 @@ pango_shape (const gchar *text,
s = pango_font_description_to_string (desc);
pango_font_description_free (desc);
+ /* TODO: Write out the beginning excerpt of text here? */
g_warning ("shape engine failure, expect ugly output. the offending font is '%s'", s);
g_free (s);
@@ -88,13 +89,13 @@ pango_shape (const gchar *text,
!_pango_warning_history.shape_shape_engine)
{
_pango_warning_history.shape_shape_engine = TRUE;
- g_critical ("pango_shape called with bad shape_engine, expect ugly output");
+ g_warning ("pango_shape called with bad shape_engine, expect ugly output");
}
if (!PANGO_IS_FONT (analysis->font) &&
!_pango_warning_history.shape_font)
{
_pango_warning_history.shape_font = TRUE;
- g_critical ("pango_shape called with bad font, expect ugly output");
+ g_warning ("pango_shape called with bad font, expect ugly output");
}
glyphs->num_glyphs = 0;