unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* divide-by-zero during redisplay
@ 2008-05-26 10:43 Miles Bader
  2008-05-26 10:58 ` Miles Bader
  2008-05-27  1:44 ` Kenichi Handa
  0 siblings, 2 replies; 3+ messages in thread
From: Miles Bader @ 2008-05-26 10:43 UTC (permalink / raw)
  To: emacs-devel

In the function "xfont_open", there's this code (line 611):

	  int width = font->space_width, n = pcm != NULL;

	  for (char2b.byte2 = 33; char2b.byte2 <= 126; char2b.byte2++)
	    if ((pcm = xfont_get_pcm (xfont, &char2b)) != NULL)
	      width += pcm->width, n++;
	  font->average_width = width / n;

I'm getting divide-by-zeros during redisplay, because n == 0.

Maybe this represents some degenerate condition (I'm having a hard time
reproducing it currently; I saw it happen while displaying rcirc channel
buffers), but still, it seems the code should avoid dividing by zero in
such a case.

Thanks,

-Miles

-- 
Mayonnaise, n. One of the sauces that serve the French in place of a state
religion.




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: divide-by-zero during redisplay
  2008-05-26 10:43 divide-by-zero during redisplay Miles Bader
@ 2008-05-26 10:58 ` Miles Bader
  2008-05-27  1:44 ` Kenichi Handa
  1 sibling, 0 replies; 3+ messages in thread
From: Miles Bader @ 2008-05-26 10:58 UTC (permalink / raw)
  To: emacs-devel

Ok, the problem also occurs while displaying the HELLO buffer.

Here's some debugging prints in case it's useful:

0x081d9bc5 in xfont_open (f=0x8730600, entity=187898252, pixel_size=12) at /usr/local/src/emacs/miles/src/xfont.c:616
(gdb) p font
$1 = (struct font *) 0xb3318b0
(gdb) p *font
$2 = {
  size = 1075838994, 
  next = 0x8875b38, 
  props = {138058081, 140052105, 140052105, 141259337, 183594753, 205448, 205064, 205312, 96, 0, 0, 0, 137858329, 137858329, 184390795, 184390795, 137858329, 138058081}, 
  max_width = 0, 
  pixel_size = 12, 
  height = 15, 
  space_width = 0, 
  average_width = 0, 
  min_width = 0, 
  ascent = 12, 
  descent = 3, 
  underline_thickness = 0, 
  underline_position = 0, 
  vertical_centering = 0, 
  encoding_type = 0 '\0', 
  baseline_offset = 0, 
  relative_compose = 0, 
  default_ascent = 0, 
  font_encoder = 0x0, 
  driver = 0x832fa80, 
  encoding_charset = 2, 
  repertory_charset = -1
}
(gdb) p pcm
$3 = (XCharStruct *) 0x0
(gdb) p props[0]
No symbol "props" in current context.
(gdb) p font->props[0]
$4 = 138058081
(gdb) pr
x
(gdb) p font->props[1]
$5 = 140052105
(gdb) pr
wenquanyi
(gdb) p font->props[2]
$6 = 140052105
(gdb) pr
wenquanyi
(gdb) p font->props[3]
$7 = 141259337
(gdb) pr

(gdb) p font->props[4]
$8 = 183594753
(gdb) pr
gb18030\.2000-0
(gdb) p font->props[5]
$9 = 205448
(gdb) pr
25681
(gdb) p font->props[6]
$10 = 205064
(gdb) pr
25633
(gdb) p font->props[7]
$11 = 205312
(gdb) pr
25664
(gdb) p font->props[8]
$12 = 96
(gdb) pr
12
(gdb) p font->props[9]
$13 = 0
(gdb) p font->props[10]
$14 = 0
(gdb) p font->props[11]
$15 = 0
(gdb) pr
0
(gdb) p font->props[12]
$16 = 137858329
(gdb) pr
nil
(gdb) p font->props[13]
$17 = 137858329
(gdb) pr
nil
(gdb) p font->props[14]
$18 = 184390795
(gdb) pr
"-wenquanyi-wenquanyi-medium-r-normal--12-87-100-100-p-120-gb18030.2000-0"
(gdb) p font->props[15]
$19 = 184390795
(gdb) pr
"-wenquanyi-wenquanyi-medium-r-normal--12-87-100-100-p-120-gb18030.2000-0"
(gdb) p font->props[16]
$20 = 137858329
(gdb) pr
nil
(gdb) p font->props[17]
$21 = 138058081
(gdb) pr
x
(gdb) p font->props[18]
$22 = 0
(gdb) 


-Miles

-- 
Accordion, n. An instrument in harmony with the sentiments of an assassin.




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: divide-by-zero during redisplay
  2008-05-26 10:43 divide-by-zero during redisplay Miles Bader
  2008-05-26 10:58 ` Miles Bader
@ 2008-05-27  1:44 ` Kenichi Handa
  1 sibling, 0 replies; 3+ messages in thread
From: Kenichi Handa @ 2008-05-27  1:44 UTC (permalink / raw)
  To: Miles Bader; +Cc: emacs-devel

In article <buotzgl4a7a.fsf@dhapc248.dev.necel.com>, Miles Bader <miles.bader@necel.com> writes:

> In the function "xfont_open", there's this code (line 611):
> 	  int width = font->space_width, n = pcm != NULL;

> 	  for (char2b.byte2 = 33; char2b.byte2 <= 126; char2b.byte2++)
> 	    if ((pcm = xfont_get_pcm (xfont, &char2b)) != NULL)
> 	      width += pcm->width, n++;
> 	  font->average_width = width / n;

> I'm getting divide-by-zeros during redisplay, because n == 0.

> Maybe this represents some degenerate condition (I'm having a hard time
> reproducing it currently; I saw it happen while displaying rcirc channel
> buffers), but still, it seems the code should avoid dividing by zero in
> such a case.

Right.  I've just installed a fix.

---
Kenichi Handa
handa@ni.aist.go.jp




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-05-27  1:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-26 10:43 divide-by-zero during redisplay Miles Bader
2008-05-26 10:58 ` Miles Bader
2008-05-27  1:44 ` Kenichi Handa

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).