From: Eli Zaretskii <eliz@gnu.org>
To: Werner LEMBERG <wl@gnu.org>
Cc: 31316@debbugs.gnu.org
Subject: bug#31316: Emacs hangs in `font_open_entity'
Date: Mon, 30 Apr 2018 18:21:12 +0300 [thread overview]
Message-ID: <838t94sot3.fsf@gnu.org> (raw)
In-Reply-To: <20180430.101308.1102659443644829077.wl@gnu.org> (message from Werner LEMBERG on Mon, 30 Apr 2018 10:13:08 +0200 (CEST))
> Date: Mon, 30 Apr 2018 10:13:08 +0200 (CEST)
> From: Werner LEMBERG <wl@gnu.org>
>
> If I call `emacs -Q' and load the attached file `testchar' with
>
> C-x RET c gb18030 C-x C-f testchar
>
> Emacs hangs in `font_open_entity' on my GNU/Linux box:
>
> for (psize = pixel_size; ; psize++)
> {
> font_object = driver_list->driver->open (f, entity, psize);
> if (NILP (font_object))
> return Qnil;
> font = XFONT_OBJECT (font_object);
> if (font->average_width > 0 && font->height > 0)
> break;
> }
Does the patch below solve this without introducing any new problems?
> Both `average_width' and `height' are always zero for `font'
> regardless of `psize'; this effectively makes the above code an
> endless loop.
What kind of strange font has both of these always zero?
diff --git a/src/font.c b/src/font.c
index ef3f92b..daa6be0 100644
--- a/src/font.c
+++ b/src/font.c
@@ -2901,7 +2901,9 @@ font_open_entity (struct frame *f, Lisp_Object entity, int pixel_size)
for (psize = pixel_size; ; psize++)
{
font_object = driver_list->driver->open (f, entity, psize);
- if (NILP (font_object))
+ if (NILP (font_object)
+ /* Avoid an infinite loop. */
+ || psize > pixel_size + 100)
return Qnil;
font = XFONT_OBJECT (font_object);
if (font->average_width > 0 && font->height > 0)
next prev parent reply other threads:[~2018-04-30 15:21 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-30 8:13 bug#31316: Emacs hangs in `font_open_entity' Werner LEMBERG
2018-04-30 8:16 ` Werner LEMBERG
2018-04-30 15:21 ` Eli Zaretskii [this message]
2018-04-30 17:22 ` Werner LEMBERG
2018-04-30 19:44 ` Eli Zaretskii
2018-04-30 20:20 ` Werner LEMBERG
2018-05-01 15:06 ` Eli Zaretskii
2018-05-05 8:55 ` Eli Zaretskii
2018-05-08 20:20 ` Werner LEMBERG
2018-05-08 20:49 ` Werner LEMBERG
2019-11-17 8:23 ` Lars Ingebrigtsen
2019-11-17 15:55 ` Eli Zaretskii
2019-11-17 16:05 ` Lars Ingebrigtsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=838t94sot3.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=31316@debbugs.gnu.org \
--cc=wl@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.