emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] trunk r113891: Fix infinite frame selection loop (Bug#1502


From: Dmitry Antipov
Subject: [Emacs-diffs] trunk r113891: Fix infinite frame selection loop (Bug#15025).
Date: Thu, 15 Aug 2013 15:37:50 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 113891
revision-id: address@hidden
parent: address@hidden
committer: Dmitry Antipov <address@hidden>
branch nick: trunk
timestamp: Thu 2013-08-15 19:37:03 +0400
message:
  Fix infinite frame selection loop (Bug#15025).
  * frame.c (delete_frame): Prefer fast ad-hoc loop to next_frame.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/frame.c                    frame.c-20091113204419-o5vbwnq5f7feedwu-243
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2013-08-15 15:28:53 +0000
+++ b/src/ChangeLog     2013-08-15 15:37:03 +0000
@@ -1,3 +1,8 @@
+2013-08-15  Dmitry Antipov  <address@hidden>
+
+       Fix infinite frame selection loop (Bug#15025).
+       * frame.c (delete_frame): Prefer fast ad-hoc loop to next_frame.
+
 2013-08-15  Eli Zaretskii  <address@hidden>
 
        * xdisp.c (compute_window_start_on_continuation_line): When

=== modified file 'src/frame.c'
--- a/src/frame.c       2013-08-14 16:36:16 +0000
+++ b/src/frame.c       2013-08-15 15:37:03 +0000
@@ -1199,8 +1199,15 @@
     {
       Lisp_Object tail, frame1;
 
-      /* Look for another visible frame on the same terminal.  */
-      frame1 = next_frame (frame, Qvisible);
+      /* Look for another visible frame on the same terminal.
+        Do not call next_frame here because it may loop forever.
+        See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15025.  */
+      FOR_EACH_FRAME (tail, frame1)
+       if (!EQ (frame, frame1)
+           && (FRAME_TERMINAL (XFRAME (frame))
+               == FRAME_TERMINAL (XFRAME (frame1)))
+           && FRAME_VISIBLE_P (XFRAME (frame1)))
+         break;
 
       /* If there is none, find *some* other frame.  */
       if (NILP (frame1) || EQ (frame1, frame))


reply via email to

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