emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] emacs-24 r117137: Fix bug #17539 with infinite recursion d


From: Eli Zaretskii
Subject: [Emacs-diffs] emacs-24 r117137: Fix bug #17539 with infinite recursion during scroll commands.
Date: Wed, 21 May 2014 15:03:50 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 117137
revision-id: address@hidden
parent: address@hidden
fixes bug: http://debbugs.gnu.org/17539
committer: Eli Zaretskii <address@hidden>
branch nick: emacs-24
timestamp: Wed 2014-05-21 18:03:18 +0300
message:
  Fix bug #17539 with infinite recursion during scroll commands.
  
   src/xdisp.c (move_it_in_display_line_to): Avoid infinite recursion:
   when closest_pos is identical to to_charpos, don't recurse, since
   we already tried that, and failed.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/xdisp.c                    xdisp.c-20091113204419-o5vbwnq5f7feedwu-240
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2014-05-20 16:28:39 +0000
+++ b/src/ChangeLog     2014-05-21 15:03:18 +0000
@@ -1,3 +1,9 @@
+2014-05-21  Eli Zaretskii  <address@hidden>
+
+       * xdisp.c (move_it_in_display_line_to): Avoid infinite recursion:
+       when closest_pos is identical to to_charpos, don't recurse, since
+       we already tried that, and failed.  (Bug#17539)
+
 2014-05-20  Eli Zaretskii  <address@hidden>
 
        * w32fns.c (unwind_create_frame) [GLYPH_DEBUG]: If we are

=== modified file 'src/xdisp.c'
--- a/src/xdisp.c       2014-04-18 08:35:09 +0000
+++ b/src/xdisp.c       2014-05-21 15:03:18 +0000
@@ -8812,8 +8812,11 @@
                  if (closest_pos < ZV)
                    {
                      RESTORE_IT (it, &ppos_it, ppos_data);
-                     move_it_in_display_line_to (it, closest_pos, -1,
-                                                 MOVE_TO_POS);
+                     /* Don't recurse if closest_pos is equal to
+                        to_charpos, since we have just tried that.  */
+                     if (closest_pos != to_charpos)
+                       move_it_in_display_line_to (it, closest_pos, -1,
+                                                   MOVE_TO_POS);
                      result = MOVE_POS_MATCH_OR_ZV;
                    }
                  else
@@ -8874,8 +8877,9 @@
                      && !at_eob_p && closest_pos < ZV)
                    {
                      RESTORE_IT (it, &ppos_it, ppos_data);
-                     move_it_in_display_line_to (it, closest_pos, -1,
-                                                 MOVE_TO_POS);
+                     if (closest_pos != to_charpos)
+                       move_it_in_display_line_to (it, closest_pos, -1,
+                                                   MOVE_TO_POS);
                    }
                  result = MOVE_POS_MATCH_OR_ZV;
                  break;
@@ -8893,7 +8897,9 @@
              if (closest_pos < ZV)
                {
                  RESTORE_IT (it, &ppos_it, ppos_data);
-                 move_it_in_display_line_to (it, closest_pos, -1, MOVE_TO_POS);
+                 if (closest_pos != to_charpos)
+                   move_it_in_display_line_to (it, closest_pos, -1,
+                                               MOVE_TO_POS);
                }
              result = MOVE_POS_MATCH_OR_ZV;
              break;


reply via email to

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