diff options
| author | Eli Zaretskii | 2012-07-23 19:57:20 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2012-07-23 19:57:20 +0300 |
| commit | 436bc8e0a73e02ed0840633c4d4d4922a222db24 (patch) | |
| tree | 2abf02a155efdc34837295c07b74de3593c2423e /src/print.c | |
| parent | dfce923ac9b8e14bcb2937617775cc310745978a (diff) | |
| download | emacs-436bc8e0a73e02ed0840633c4d4d4922a222db24.tar.gz emacs-436bc8e0a73e02ed0840633c4d4d4922a222db24.zip | |
Fix bug #12025 with a crash when displaying tooltips.
src/print.c (print_object): Don't crash when a frame's name is nil
or invalid.
src/window.c (decode_any_window): Disable CHECK_LIVE_FRAME test, as
it signals an error when a tooltip frame is being created.
Diffstat (limited to 'src/print.c')
| -rw-r--r-- | src/print.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/print.c b/src/print.c index b650b1265b1..fc435efe7c5 100644 --- a/src/print.c +++ b/src/print.c | |||
| @@ -1897,10 +1897,21 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag | |||
| 1897 | else if (FRAMEP (obj)) | 1897 | else if (FRAMEP (obj)) |
| 1898 | { | 1898 | { |
| 1899 | int len; | 1899 | int len; |
| 1900 | Lisp_Object frame_name = XFRAME (obj)->name; | ||
| 1901 | |||
| 1900 | strout ((FRAME_LIVE_P (XFRAME (obj)) | 1902 | strout ((FRAME_LIVE_P (XFRAME (obj)) |
| 1901 | ? "#<frame " : "#<dead frame "), | 1903 | ? "#<frame " : "#<dead frame "), |
| 1902 | -1, -1, printcharfun); | 1904 | -1, -1, printcharfun); |
| 1903 | print_string (XFRAME (obj)->name, printcharfun); | 1905 | if (!STRINGP (frame_name)) |
| 1906 | { | ||
| 1907 | /* A frame could be too young and have no name yet; | ||
| 1908 | don't crash. */ | ||
| 1909 | if (SYMBOLP (frame_name)) | ||
| 1910 | frame_name = Fsymbol_name (frame_name); | ||
| 1911 | else /* can't happen: name should be either nil or string */ | ||
| 1912 | frame_name = build_string ("*INVALID*FRAME*NAME*"); | ||
| 1913 | } | ||
| 1914 | print_string (frame_name, printcharfun); | ||
| 1904 | len = sprintf (buf, " %p", XFRAME (obj)); | 1915 | len = sprintf (buf, " %p", XFRAME (obj)); |
| 1905 | strout (buf, len, len, printcharfun); | 1916 | strout (buf, len, len, printcharfun); |
| 1906 | PRINTCHAR ('>'); | 1917 | PRINTCHAR ('>'); |