GNU bug report logs - #9495
24.0.50; Segfault in try_cursor_movement

Previous Next

Package: emacs;

Reported by: Johan Bockgård <bojohan <at> gnu.org>

Date: Tue, 13 Sep 2011 19:33:02 UTC

Severity: normal

Found in version 24.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Johan Bockgård <bojohan <at> gnu.org>
To: bug-gnu-emacs <at> gnu.org
Subject: 24.0.50; Segfault in try_cursor_movement
Date: Tue, 13 Sep 2011 21:28:17 +0200
Program terminated with signal 11, Segmentation fault.
#0  0x00007f5bccbe6fe7 in kill () at ../sysdeps/unix/syscall-template.S:82
82      ../sysdeps/unix/syscall-template.S: No such file or directory.
        in ../sysdeps/unix/syscall-template.S
(gdb) bt
#0  0x00007f5bccbe6fe7 in kill () at ../sysdeps/unix/syscall-template.S:82
#1  0x000000000056e889 in fatal_error_signal (sig=11) at emacs.c:358
#2  <signal handler called>
#3  0x0000000000465f3f in try_cursor_movement (window=20987605, startp=...,
    scroll_step=0x7fff5e400758) at xdisp.c:14639

xdisp.c:14639: (BUFFERP (g->object) && g->charpos == PT)

g is not a valid glyph here.

(gdb) p MATRIX_ROW (w->current_matrix, w->cursor.vpos).used[TEXT_AREA]
$3 = 80
(gdb) p w->cursor.hpos
$4 = 80


2011-09-13  Johan Bockgård  <bojohan <at> gnu.org>

	* xdisp.c (try_cursor_movement): Check bounds of hpos.

=== modified file 'src/xdisp.c'
--- src/xdisp.c	2011-09-09 01:06:52 +0000
+++ src/xdisp.c	2011-09-11 15:03:56 +0000
@@ -14627,7 +14627,11 @@ try_cursor_movement (Lisp_Object window,
 		     is set, we are done.  */
 		  at_zv_p =
 		    MATRIX_ROW (w->current_matrix, w->cursor.vpos)->ends_at_zv_p;
-		  if (!at_zv_p)
+		  if (!at_zv_p
+		      && w->cursor.hpos >= 0
+		      && (w->cursor.hpos
+			  < MATRIX_ROW_USED (w->current_matrix,
+					     w->cursor.vpos)))
 		    {
 		      struct glyph_row *candidate =
 			MATRIX_ROW (w->current_matrix, w->cursor.vpos);


BTW, is this code in try_window_reusing_current_matrix correct?

    struct glyph *glyph = row->glyphs[TEXT_AREA] + w->cursor.hpos;
    struct glyph *end = glyph + row->used[TEXT_AREA];

It doesn't seem right for end to depend on hpos.




This bug report was last modified 13 years and 313 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.