]> code.delx.au - gnu-emacs/commitdiff
Attempt to fix bug #17771 with segfault if "C-h h" is interrupted.
authorEli Zaretskii <eliz@gnu.org>
Fri, 13 Jun 2014 13:53:24 +0000 (16:53 +0300)
committerEli Zaretskii <eliz@gnu.org>
Fri, 13 Jun 2014 13:53:24 +0000 (16:53 +0300)
 src/alloc.c (cleanup_vector): Don't dereference a font driver
 pointer if it is NULL.

src/ChangeLog
src/alloc.c

index 3468cea6159c11c1f80be35a83a744ad48a1135b..87b9b32510e9080c87ffc2c55f482acf44181a7e 100644 (file)
@@ -1,3 +1,8 @@
+2014-06-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * alloc.c (cleanup_vector): Don't dereference a font driver
+       pointer if it is NULL.  (Bug#17771)
+
 2014-06-11  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (set_cursor_from_row): Fix an off-by-one error when
index 12b3d4ba16515f0866118629afc9535fd7488fb6..a3f3f5478cb75f018c2c7537dd26feff3396806b 100644 (file)
@@ -2924,9 +2924,16 @@ cleanup_vector (struct Lisp_Vector *vector)
       && ((vector->header.size & PSEUDOVECTOR_SIZE_MASK)
          == FONT_OBJECT_MAX))
     {
-      /* Attempt to catch subtle bugs like Bug#16140.  */
-      eassert (valid_font_driver (((struct font *) vector)->driver));
-      ((struct font *) vector)->driver->close ((struct font *) vector);
+      struct font_driver *drv = ((struct font *) vector)->driver;
+
+      /* The font driver might sometimes be NULL, e.g. if Emacs was
+        interrupted before it had time to set it up.  */
+      if (drv)
+       {
+         /* Attempt to catch subtle bugs like Bug#16140.  */
+         eassert (valid_font_driver (drv));
+         drv->close ((struct font *) vector);
+       }
     }
 }