diff options
| author | Joakim Verona | 2013-04-09 08:30:40 +0200 |
|---|---|---|
| committer | Joakim Verona | 2013-04-09 08:30:40 +0200 |
| commit | b7ef53c752790136ca12dcca9e291bf88c0e5bee (patch) | |
| tree | bee2a6db58cc40c14638fed1e6ae0414f374ce9f /src | |
| parent | 7744b1dba9cb0a83cea2abbc64932a93f28a82e0 (diff) | |
| parent | ba3b2d88d847cf1669f3f0c340f8864c77fe59de (diff) | |
| download | emacs-b7ef53c752790136ca12dcca9e291bf88c0e5bee.tar.gz emacs-b7ef53c752790136ca12dcca9e291bf88c0e5bee.zip | |
auto upstream
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 7 | ||||
| -rw-r--r-- | src/fns.c | 2 | ||||
| -rw-r--r-- | src/keyboard.c | 10 | ||||
| -rw-r--r-- | src/window.c | 17 |
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 @@ | |||
| 1 | 2013-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 | |||
| 1 | 2013-04-07 Eli Zaretskii <eliz@gnu.org> | 8 | 2013-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. |
| @@ -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. */ |
| 78 | volatile int interrupt_input_blocked; | 78 | volatile 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 |