diff options
| author | Joakim Verona | 2012-07-27 02:22:03 +0200 |
|---|---|---|
| committer | Joakim Verona | 2012-07-27 02:22:03 +0200 |
| commit | 5fb63197843dcae66f2fe0ddd6f4a9d560e9db2f (patch) | |
| tree | 5c55f1096a656a9759f0b53a0b5d1a2289bd366f /src/undo.c | |
| parent | 0c5c85cf2b350c965bb1ffa5b2d77c2adebc406b (diff) | |
| parent | 562157c814037dcba58a20cd6908a95992c22283 (diff) | |
| download | emacs-5fb63197843dcae66f2fe0ddd6f4a9d560e9db2f.tar.gz emacs-5fb63197843dcae66f2fe0ddd6f4a9d560e9db2f.zip | |
upstream
Diffstat (limited to 'src/undo.c')
| -rw-r--r-- | src/undo.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/undo.c b/src/undo.c index 1cb048690ba..c90e7b62405 100644 --- a/src/undo.c +++ b/src/undo.c | |||
| @@ -226,7 +226,7 @@ record_first_change (void) | |||
| 226 | base_buffer = base_buffer->base_buffer; | 226 | base_buffer = base_buffer->base_buffer; |
| 227 | 227 | ||
| 228 | BVAR (current_buffer, undo_list) = | 228 | BVAR (current_buffer, undo_list) = |
| 229 | Fcons (Fcons (Qt, INTEGER_TO_CONS (base_buffer->modtime)), | 229 | Fcons (Fcons (Qt, make_lisp_time (base_buffer->modtime)), |
| 230 | BVAR (current_buffer, undo_list)); | 230 | BVAR (current_buffer, undo_list)); |
| 231 | } | 231 | } |
| 232 | 232 | ||
| @@ -438,8 +438,8 @@ truncate_undo_list (struct buffer *b) | |||
| 438 | unbind_to (count, Qnil); | 438 | unbind_to (count, Qnil); |
| 439 | } | 439 | } |
| 440 | 440 | ||
| 441 | static void user_error (const char*) NO_RETURN; | 441 | static _Noreturn void |
| 442 | static void user_error (const char *msg) | 442 | user_error (const char *msg) |
| 443 | { | 443 | { |
| 444 | xsignal1 (Quser_error, build_string (msg)); | 444 | xsignal1 (Quser_error, build_string (msg)); |
| 445 | } | 445 | } |
| @@ -505,10 +505,23 @@ Return what remains of the list. */) | |||
| 505 | cdr = XCDR (next); | 505 | cdr = XCDR (next); |
| 506 | if (EQ (car, Qt)) | 506 | if (EQ (car, Qt)) |
| 507 | { | 507 | { |
| 508 | /* Element (t high . low) records previous modtime. */ | 508 | /* Element (t . TIME) records previous modtime. |
| 509 | Preserve any flag of NONEXISTENT_MODTIME_NSECS or | ||
| 510 | UNKNOWN_MODTIME_NSECS. */ | ||
| 509 | struct buffer *base_buffer = current_buffer; | 511 | struct buffer *base_buffer = current_buffer; |
| 510 | time_t mod_time; | 512 | EMACS_TIME mod_time; |
| 511 | CONS_TO_INTEGER (cdr, time_t, mod_time); | 513 | |
| 514 | if (CONSP (cdr) | ||
| 515 | && CONSP (XCDR (cdr)) | ||
| 516 | && CONSP (XCDR (XCDR (cdr))) | ||
| 517 | && CONSP (XCDR (XCDR (XCDR (cdr)))) | ||
| 518 | && INTEGERP (XCAR (XCDR (XCDR (XCDR (cdr))))) | ||
| 519 | && XINT (XCAR (XCDR (XCDR (XCDR (cdr))))) < 0) | ||
| 520 | mod_time = | ||
| 521 | (make_emacs_time | ||
| 522 | (0, XINT (XCAR (XCDR (XCDR (XCDR (cdr))))) / 1000)); | ||
| 523 | else | ||
| 524 | mod_time = lisp_time_argument (cdr); | ||
| 512 | 525 | ||
| 513 | if (current_buffer->base_buffer) | 526 | if (current_buffer->base_buffer) |
| 514 | base_buffer = current_buffer->base_buffer; | 527 | base_buffer = current_buffer->base_buffer; |
| @@ -516,7 +529,7 @@ Return what remains of the list. */) | |||
| 516 | /* If this records an obsolete save | 529 | /* If this records an obsolete save |
| 517 | (not matching the actual disk file) | 530 | (not matching the actual disk file) |
| 518 | then don't mark unmodified. */ | 531 | then don't mark unmodified. */ |
| 519 | if (mod_time != base_buffer->modtime) | 532 | if (EMACS_TIME_NE (mod_time, base_buffer->modtime)) |
| 520 | continue; | 533 | continue; |
| 521 | #ifdef CLASH_DETECTION | 534 | #ifdef CLASH_DETECTION |
| 522 | Funlock_buffer (); | 535 | Funlock_buffer (); |