Fix crashes in GC in "emacs -nw".
authorEli Zaretskii <eliz@gnu.org>
Mon, 19 Apr 2010 12:12:13 +0000 (15:12 +0300)
committerEli Zaretskii <eliz@gnu.org>
Mon, 19 Apr 2010 12:12:13 +0000 (15:12 +0300)
 xdisp.c (display_line): Don't write beyond the last glyph row in
 the desired matrix.  Fixes crashes in "emacs -nw", see
 http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00075.html
 and http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00213.html

src/ChangeLog
src/xdisp.c

index c0bc876..17915b3 100644 (file)
@@ -1,3 +1,11 @@
+2010-04-19  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (display_line): Don't write beyond the last glyph row in
+       the desired matrix.  Fixes a crash in "emacs -nw", see
+       http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00075.html
+       and
+       http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00213.html
+
 2010-04-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * alloc.c (Fpurecopy): Hash-cons if requested.
index 57f75ce..d0bf26e 100644 (file)
@@ -17808,10 +17808,12 @@ display_line (it)
   it->current_y += row->height;
   ++it->vpos;
   ++it->glyph_row;
-  /* The next row should use same value of the reversed_p flag as this
-     one.  set_iterator_to_next decides when it's a new paragraph, and
-     PRODUCE_GLYPHS recomputes the value of the flag accordingly.  */
-  it->glyph_row->reversed_p = row->reversed_p;
+  /* The next row should by default use the same value of the
+     reversed_p flag as this one.  set_iterator_to_next decides when
+     it's a new paragraph, and PRODUCE_GLYPHS recomputes the value of
+     the flag accordingly.  */
+  if (it->glyph_row < MATRIX_BOTTOM_TEXT_ROW (it->w->desired_matrix, it->w))
+    it->glyph_row->reversed_p = row->reversed_p;
   it->start = row_end;
   return row->displays_text_p;
 }