aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoakim Verona2013-04-09 08:30:40 +0200
committerJoakim Verona2013-04-09 08:30:40 +0200
commitb7ef53c752790136ca12dcca9e291bf88c0e5bee (patch)
treebee2a6db58cc40c14638fed1e6ae0414f374ce9f /src
parent7744b1dba9cb0a83cea2abbc64932a93f28a82e0 (diff)
parentba3b2d88d847cf1669f3f0c340f8864c77fe59de (diff)
downloademacs-b7ef53c752790136ca12dcca9e291bf88c0e5bee.tar.gz
emacs-b7ef53c752790136ca12dcca9e291bf88c0e5bee.zip
auto upstream
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog7
-rw-r--r--src/fns.c2
-rw-r--r--src/keyboard.c10
-rw-r--r--src/window.c17
4 files changed, 23 insertions, 13 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index cb6930f9acc..04dcee7b6eb 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
12013-04-08 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * window.c (select_window): Don't record_buffer while the invariant is
4 temporarily broken (bug#14161).
5
6 * fns.c (Fdelq): Don't assume !NILP => CONSP.
7
12013-04-07 Eli Zaretskii <eliz@gnu.org> 82013-04-07 Eli Zaretskii <eliz@gnu.org>
2 9
3 * fileio.c (ACL_NOT_WELL_SUPPORTED): Define macro for WINDOWSNT. 10 * fileio.c (ACL_NOT_WELL_SUPPORTED): Define macro for WINDOWSNT.
diff --git a/src/fns.c b/src/fns.c
index 86bdc0250dc..08c6f055f38 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -1551,7 +1551,7 @@ the value of a list `foo'. */)
1551 1551
1552 tail = list; 1552 tail = list;
1553 prev = Qnil; 1553 prev = Qnil;
1554 while (!NILP (tail)) 1554 while (CONSP (tail))
1555 { 1555 {
1556 CHECK_LIST_CONS (tail, list); 1556 CHECK_LIST_CONS (tail, list);
1557 tem = XCAR (tail); 1557 tem = XCAR (tail);
diff --git a/src/keyboard.c b/src/keyboard.c
index eb9f93a4c7d..ab599512085 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -72,7 +72,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
72#include TERM_HEADER 72#include TERM_HEADER
73#endif /* HAVE_WINDOW_SYSTEM */ 73#endif /* HAVE_WINDOW_SYSTEM */
74 74
75/* Variables for blockinput.h: */ 75/* Variables for blockinput.h: */
76 76
77/* Positive if interrupt input is blocked right now. */ 77/* Positive if interrupt input is blocked right now. */
78volatile int interrupt_input_blocked; 78volatile int interrupt_input_blocked;
@@ -4347,10 +4347,10 @@ timer_check_2 (Lisp_Object timers, Lisp_Object idle_timers)
4347 } 4347 }
4348 4348
4349 idle_timer_ripe = EMACS_TIME_LE (idle_timer_time, idleness_now); 4349 idle_timer_ripe = EMACS_TIME_LE (idle_timer_time, idleness_now);
4350 idle_timer_difference = 4350 idle_timer_difference
4351 (idle_timer_ripe 4351 = (idle_timer_ripe
4352 ? sub_emacs_time (idleness_now, idle_timer_time) 4352 ? sub_emacs_time (idleness_now, idle_timer_time)
4353 : sub_emacs_time (idle_timer_time, idleness_now)); 4353 : sub_emacs_time (idle_timer_time, idleness_now));
4354 } 4354 }
4355 4355
4356 /* Decide which timer is the next timer, 4356 /* Decide which timer is the next timer,
diff --git a/src/window.c b/src/window.c
index 77604f4ee19..416d27d2405 100644
--- a/src/window.c
+++ b/src/window.c
@@ -486,12 +486,6 @@ select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap)
486 w = XWINDOW (window); 486 w = XWINDOW (window);
487 w->frozen_window_start_p = 0; 487 w->frozen_window_start_p = 0;
488 488
489 if (NILP (norecord))
490 {
491 w->use_time = ++window_select_count;
492 record_buffer (w->contents);
493 }
494
495 /* Make the selected window's buffer current. */ 489 /* Make the selected window's buffer current. */
496 Fset_buffer (w->contents); 490 Fset_buffer (w->contents);
497 491
@@ -516,6 +510,15 @@ select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap)
516 510
517 select_window_1 (window, inhibit_point_swap); 511 select_window_1 (window, inhibit_point_swap);
518 512
513 /* record_buffer can run QUIT, so make sure it is run only after we have
514 re-established the invariant between selected_window and selected_frame,
515 otherwise the temporary broken invariant might "escape" (bug#14161). */
516 if (NILP (norecord))
517 {
518 w->use_time = ++window_select_count;
519 record_buffer (w->contents);
520 }
521
519 bset_last_selected_window (XBUFFER (w->contents), window); 522 bset_last_selected_window (XBUFFER (w->contents), window);
520 windows_or_buffers_changed++; 523 windows_or_buffers_changed++;
521 return window; 524 return window;
@@ -2930,7 +2933,7 @@ window-start value is reasonable when this function is called. */)
2930 2933
2931 replace_window (root, window, 1); 2934 replace_window (root, window, 1);
2932 2935
2933 /* This must become SWINDOW anyway ....... */ 2936 /* This must become SWINDOW anyway ....... */
2934 if (BUFFERP (w->contents) && !resize_failed) 2937 if (BUFFERP (w->contents) && !resize_failed)
2935 { 2938 {
2936 /* Try to minimize scrolling, by setting the window start to the 2939 /* Try to minimize scrolling, by setting the window start to the