Fix bugs #9738 & 9739 with a display string that ends in 2 newlines.
authorEli Zaretskii <eliz@gnu.org>
Wed, 12 Oct 2011 20:07:59 +0000 (22:07 +0200)
committerEli Zaretskii <eliz@gnu.org>
Wed, 12 Oct 2011 20:07:59 +0000 (22:07 +0200)
 src/xdisp.c (find_row_edges): Handle the case where ROW comes from a
 display string and the previous row comes from the same string and
 is empty.

src/ChangeLog
src/xdisp.c

index 9466483..cf0644f 100644 (file)
@@ -1,3 +1,9 @@
+2011-10-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (find_row_edges): Handle the case where ROW comes from a
+       display string and the previous row comes from the same string and
+       is empty.  (Bug#9739)  (Bug#9738)
+
 2011-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * doc.c (get_doc_string): Encode file name (bug#9735).
index b44c2fc..01472a6 100644 (file)
@@ -18646,7 +18646,12 @@ find_row_edges (struct it *it, struct glyph_row *row,
                    seen_this_string = 1;
                }
              else
-               abort ();
+               /* If all the glyphs of the previous row were inserted
+                  by redisplay, it means the previous row was
+                  produced from a single newline, which is only
+                  possible if that newline came from the same string
+                  as the one which produced this ROW.  */
+               seen_this_string = 1;
            }
          else
            {
@@ -18662,7 +18667,7 @@ find_row_edges (struct it *it, struct glyph_row *row,
                    seen_this_string = 1;
                }
              else
-               abort ();
+               seen_this_string = 1;
            }
        }
       /* Take note of each display string that covers a newline only