Mercurial > emacs
changeset 53681:206ba2723812
(Fmd5): If OBJECT is a buffer different from the current
one, set buffer to OBJECT temporarily.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 23 Jan 2004 00:11:43 +0000 |
parents | 6b1881ea9daf |
children | 7b5a4f5f9b52 |
files | src/fns.c |
diffstat | 1 files changed, 14 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fns.c Thu Jan 22 23:37:46 2004 +0000 +++ b/src/fns.c Fri Jan 23 00:11:43 2004 +0000 @@ -5454,12 +5454,18 @@ } else { + struct buffer *prev = current_buffer; + + record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); + CHECK_BUFFER (object); bp = XBUFFER (object); + if (bp != current_buffer) + set_buffer_internal (bp); if (NILP (start)) - b = BUF_BEGV (bp); + b = BEGV; else { CHECK_NUMBER_COERCE_MARKER (start); @@ -5467,7 +5473,7 @@ } if (NILP (end)) - e = BUF_ZV (bp); + e = ZV; else { CHECK_NUMBER_COERCE_MARKER (end); @@ -5477,7 +5483,7 @@ if (b > e) temp = b, b = e, e = temp; - if (!(BUF_BEGV (bp) <= b && e <= BUF_ZV (bp))) + if (!(BEGV <= b && e <= ZV)) args_out_of_range (start, end); if (NILP (coding_system)) @@ -5544,6 +5550,11 @@ } object = make_buffer_string (b, e, 0); + if (prev != current_buffer) + set_buffer_internal (prev); + /* Discard the unwind protect for recovering the current + buffer. */ + specpdl_ptr--; if (STRING_MULTIBYTE (object)) object = code_convert_string1 (object, coding_system, Qnil, 1);