diff options
| author | Eli Zaretskii | 2014-06-13 16:53:24 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2014-06-13 16:53:24 +0300 |
| commit | 4346235f61172f2c55dfbbd2b830233e005987e7 (patch) | |
| tree | 442e1e7d1d75203e10e8a1002f7bb938be1cca3a /src | |
| parent | 0071d45b616f0e533818e65cc7307fbe4bd2a282 (diff) | |
| download | emacs-4346235f61172f2c55dfbbd2b830233e005987e7.tar.gz emacs-4346235f61172f2c55dfbbd2b830233e005987e7.zip | |
Attempt to fix bug #17771 with segfault if "C-h h" is interrupted.
src/alloc.c (cleanup_vector): Don't dereference a font driver
pointer if it is NULL.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/alloc.c | 13 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 3468cea6159..87b9b32510e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2014-06-13 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * alloc.c (cleanup_vector): Don't dereference a font driver | ||
| 4 | pointer if it is NULL. (Bug#17771) | ||
| 5 | |||
| 1 | 2014-06-11 Eli Zaretskii <eliz@gnu.org> | 6 | 2014-06-11 Eli Zaretskii <eliz@gnu.org> |
| 2 | 7 | ||
| 3 | * xdisp.c (set_cursor_from_row): Fix an off-by-one error when | 8 | * xdisp.c (set_cursor_from_row): Fix an off-by-one error when |
diff --git a/src/alloc.c b/src/alloc.c index 12b3d4ba165..a3f3f5478cb 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -2924,9 +2924,16 @@ cleanup_vector (struct Lisp_Vector *vector) | |||
| 2924 | && ((vector->header.size & PSEUDOVECTOR_SIZE_MASK) | 2924 | && ((vector->header.size & PSEUDOVECTOR_SIZE_MASK) |
| 2925 | == FONT_OBJECT_MAX)) | 2925 | == FONT_OBJECT_MAX)) |
| 2926 | { | 2926 | { |
| 2927 | /* Attempt to catch subtle bugs like Bug#16140. */ | 2927 | struct font_driver *drv = ((struct font *) vector)->driver; |
| 2928 | eassert (valid_font_driver (((struct font *) vector)->driver)); | 2928 | |
| 2929 | ((struct font *) vector)->driver->close ((struct font *) vector); | 2929 | /* The font driver might sometimes be NULL, e.g. if Emacs was |
| 2930 | interrupted before it had time to set it up. */ | ||
| 2931 | if (drv) | ||
| 2932 | { | ||
| 2933 | /* Attempt to catch subtle bugs like Bug#16140. */ | ||
| 2934 | eassert (valid_font_driver (drv)); | ||
| 2935 | drv->close ((struct font *) vector); | ||
| 2936 | } | ||
| 2930 | } | 2937 | } |
| 2931 | } | 2938 | } |
| 2932 | 2939 | ||