bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#3682: marked as done (23.1.50; segfault when font style begins with


From: Emacs bug Tracking System
Subject: bug#3682: marked as done (23.1.50; segfault when font style begins with a number)
Date: Fri, 26 Jun 2009 06:25:09 +0000

Your message dated Fri, 26 Jun 2009 15:17:48 +0900
with message-id <address@hidden>
and subject line Re: bug#3682: 23.1.50; segfault when font style begins with a 
number
has caused the Emacs bug report #3682,
regarding 23.1.50; segfault when font style begins with a number
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact address@hidden
immediately.)


-- 
3682: http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=3682
Emacs Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: 23.1.50; segfault when font style begins with a number Date: Fri, 26 Jun 2009 01:00:09 +0100 (added by address@hidden)
get_adstyle_property() in ftfont.c appears to extract the first
whitespace-delimited word from a font's style string and pass it to
font_intern_prop().  When this function is called from ftfont_list()
-- at line 1028 in the current HEAD -- the return value is assumed to
be either nil or a symbol.

I have a font on my computer that has the style "55 Roman".  For this
font, get_adstyle_property() winds up returning an integer instead.
ftfont_list() sticks this into SYMBOL_NAME() and promptly segfaults.

The trivial patch below prevents the crash, but I don't understand the
code well enough to tell whether it's the right solution.  Maybe
ftfont_list() should be handling the integer case instead.


diff --git a/src/ftfont.c b/src/ftfont.c
index 70c1797..789e6a7 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -177,7 +177,7 @@ get_adstyle_property (FcPattern *p)
       || xstrcasecmp (str, "Oblique") == 0
       || xstrcasecmp (str, "Italic") == 0)
     return Qnil;
-  adstyle = font_intern_prop (str, end - str, 0);
+  adstyle = font_intern_prop (str, end - str, 1);
   if (font_style_to_value (FONT_WIDTH_INDEX, adstyle, 0) >= 0)
     return Qnil;
   return adstyle;


--- End Message ---
--- Begin Message --- Subject: Re: bug#3682: 23.1.50; segfault when font style begins with a number Date: Fri, 26 Jun 2009 15:17:48 +0900
In article <4A20329601B7D2EF@> (added by address@hidden), Peter Jolly 
<address@hidden> writes:

> get_adstyle_property() in ftfont.c appears to extract the first
> whitespace-delimited word from a font's style string and pass it to
> font_intern_prop().  When this function is called from ftfont_list()
> -- at line 1028 in the current HEAD -- the return value is assumed to
> be either nil or a symbol.

> I have a font on my computer that has the style "55 Roman".  For this
> font, get_adstyle_property() winds up returning an integer instead.
> ftfont_list() sticks this into SYMBOL_NAME() and promptly segfaults.

> The trivial patch below prevents the crash, but I don't understand the
> code well enough to tell whether it's the right solution.  Maybe
> ftfont_list() should be handling the integer case instead.

Thank you for the report.  Your patch is correct.  I've just
installed it to EMACS_23_1_RC and trunk.

---
Kenichi Handa
address@hidden

> diff --git a/src/ftfont.c b/src/ftfont.c
> index 70c1797..789e6a7 100644
> --- a/src/ftfont.c
> +++ b/src/ftfont.c
> @@ -177,7 +177,7 @@ get_adstyle_property (FcPattern *p)
>        || xstrcasecmp (str, "Oblique") == 0
>        || xstrcasecmp (str, "Italic") == 0)
>      return Qnil;
> -  adstyle = font_intern_prop (str, end - str, 0);
> +  adstyle = font_intern_prop (str, end - str, 1);
>    if (font_style_to_value (FONT_WIDTH_INDEX, adstyle, 0) >= 0)
>      return Qnil;
>    return adstyle;





--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]