* fontset.c (fontset_get_font_group): Add proper type checks.
authorAndreas Schwab <schwab@linux-m68k.org>
Tue, 26 Jul 2011 11:00:23 +0000 (13:00 +0200)
committerAndreas Schwab <schwab@linux-m68k.org>
Tue, 26 Jul 2011 11:00:23 +0000 (13:00 +0200)
(Bug#9172)

src/ChangeLog
src/fontset.c

index 62424f7..0587a41 100644 (file)
@@ -1,3 +1,8 @@
+2011-07-26  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * fontset.c (fontset_get_font_group): Add proper type checks.
+       (Bug#9172)
+
 2011-07-23  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * unexmacosx.c (print_load_command_name): Add cases LC_FUNCTION_STARTS
index 82e46c7..c335a56 100644 (file)
@@ -463,7 +463,7 @@ reorder_font_vector (font_group, font)
 /* Return a font-group (actually a cons (-1 . FONT-GROUP-VECTOR)) for
    character C in FONTSET.  If C is -1, return a fallback font-group.
    If C is not -1, the value may be Qt (FONTSET doesn't have a font
-   for C even in the fallback group, or 0 (a font for C may be found
+   for C even in the fallback group), or 0 (a font for C may be found
    only in the fallback group).  */
 
 static Lisp_Object
@@ -481,7 +481,9 @@ fontset_get_font_group (Lisp_Object fontset, int c)
   if (! NILP (font_group))
     return font_group;
   base_fontset = FONTSET_BASE (fontset);
-  if (c >= 0)
+  if (NILP (base_fontset))
+    font_group = Qnil;
+  else if (c >= 0)
     font_group = char_table_ref_and_range (base_fontset, c, &from, &to);
   else
     font_group = FONTSET_FALLBACK (base_fontset);
@@ -492,6 +494,8 @@ fontset_get_font_group (Lisp_Object fontset, int c)
        char_table_set_range (fontset, from, to, font_group);
       return font_group;
     }
+  if (!VECTORP (font_group))
+    return font_group;
   font_group = Fcopy_sequence (font_group);
   for (i = 0; i < ASIZE (font_group); i++)
     if (! NILP (AREF (font_group, i)))