diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | pango/break.c | 6 |
2 files changed, 10 insertions, 1 deletions
@@ -1,3 +1,8 @@ +2005-08-26 Behdad Esfahbod <pango@behdad.org> + + * pango/break.c: Protect against future line-break type additions in + glib Unicode module. + 2005-08-25 Tor Lillqvist <tml@novell.com> * pango/Makefile.am: Use pangocairo.def when linking libpangocairo diff --git a/pango/break.c b/pango/break.c index c9bef4b4..cc123add 100644 --- a/pango/break.c +++ b/pango/break.c @@ -328,6 +328,8 @@ static const int line_break_indexes[] = { INDEX_WORD_JOINER }; +#define BREAK_TYPE_SAFE(btype) \ + (btype < G_N_ELEMENTS(line_break_indexes) ? btype : G_UNICODE_BREAK_UNKNOWN) #define BREAK_INDEX(btype) \ (line_break_indexes[(btype)]) #define BREAK_ROW(before_type) \ @@ -335,7 +337,7 @@ static const int line_break_indexes[] = { #define BREAK_OP(before_type, after_type) \ (BREAK_ROW (before_type)[BREAK_INDEX (after_type)]) #define IN_BREAK_TABLE(btype) \ - (btype <= G_N_ELEMENTS(line_break_indexes) && BREAK_INDEX(btype) < INDEX_END_OF_TABLE) + (btype < G_N_ELEMENTS(line_break_indexes) && BREAK_INDEX(btype) < INDEX_END_OF_TABLE) /* Keep these in sync with the same macros in the test program */ @@ -491,6 +493,7 @@ pango_default_break (const gchar *text, next_wc = '\n'; next_break_type = g_unichar_break_type (next_wc); + next_break_type = BREAK_TYPE_SAFE (next_break_type); for (i = 0; i <= n_chars; i++) { @@ -529,6 +532,7 @@ pango_default_break (const gchar *text, } next_break_type = g_unichar_break_type (next_wc); + next_break_type = BREAK_TYPE_SAFE (next_break_type); } type = g_unichar_type (wc); |