diff options
| author | Eli Zaretskii | 2017-04-26 15:09:12 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2017-04-26 15:09:12 +0300 |
| commit | b780f16953355e931a70f7b0fd666fa7f9dad795 (patch) | |
| tree | 3f46f92cb0fe49e8b764c55a2f859bad9530db37 /src | |
| parent | 513d000c75b582edf9acef1c6df00ee2c382dcb9 (diff) | |
| download | emacs-b780f16953355e931a70f7b0fd666fa7f9dad795.tar.gz emacs-b780f16953355e931a70f7b0fd666fa7f9dad795.zip | |
Avoid segfaults when 'find-font' is invoked for a TTY frame
* src/font.c (font_pixel_size): Don't call GUI functions if F is a
text-mode frame. (Bug#26646)
Diffstat (limited to 'src')
| -rw-r--r-- | src/font.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/font.c b/src/font.c index dd6191b2b1f..5a3f271ef85 100644 --- a/src/font.c +++ b/src/font.c | |||
| @@ -306,18 +306,20 @@ font_pixel_size (struct frame *f, Lisp_Object spec) | |||
| 306 | return XINT (size); | 306 | return XINT (size); |
| 307 | if (NILP (size)) | 307 | if (NILP (size)) |
| 308 | return 0; | 308 | return 0; |
| 309 | eassert (FLOATP (size)); | 309 | if (FRAME_WINDOW_P (f)) |
| 310 | point_size = XFLOAT_DATA (size); | 310 | { |
| 311 | val = AREF (spec, FONT_DPI_INDEX); | 311 | eassert (FLOATP (size)); |
| 312 | if (INTEGERP (val)) | 312 | point_size = XFLOAT_DATA (size); |
| 313 | dpi = XINT (val); | 313 | val = AREF (spec, FONT_DPI_INDEX); |
| 314 | else | 314 | if (INTEGERP (val)) |
| 315 | dpi = FRAME_RES_Y (f); | 315 | dpi = XINT (val); |
| 316 | pixel_size = POINT_TO_PIXEL (point_size, dpi); | 316 | else |
| 317 | return pixel_size; | 317 | dpi = FRAME_RES_Y (f); |
| 318 | #else | 318 | pixel_size = POINT_TO_PIXEL (point_size, dpi); |
| 319 | return 1; | 319 | return pixel_size; |
| 320 | } | ||
| 320 | #endif | 321 | #endif |
| 322 | return 1; | ||
| 321 | } | 323 | } |
| 322 | 324 | ||
| 323 | 325 | ||