Commit fe905025 authored by Kenichi Handa's avatar Kenichi Handa

(Fmd5): If OBJECT is a buffer different from the current

one, set buffer to OBJECT temporarily.
parent fe722d76
2004-01-23 Kenichi Handa <handa@m17n.org>
* fns.c (Fmd5): If OBJECT is a buffer different from the current
one, set buffer to OBJECT temporarily.
2004-01-21 Stefan Monnier <monnier@iro.umontreal.ca> 2004-01-21 Stefan Monnier <monnier@iro.umontreal.ca>
* keyboard.c (kbd_buffer_gcpro): Remove. * keyboard.c (kbd_buffer_gcpro): Remove.
......
...@@ -5454,12 +5454,18 @@ guesswork fails. Normally, an error is signaled in such case. */) ...@@ -5454,12 +5454,18 @@ guesswork fails. Normally, an error is signaled in such case. */)
} }
else else
{ {
struct buffer *prev = current_buffer;
record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
CHECK_BUFFER (object); CHECK_BUFFER (object);
bp = XBUFFER (object); bp = XBUFFER (object);
if (bp != current_buffer)
set_buffer_internal (bp);
if (NILP (start)) if (NILP (start))
b = BUF_BEGV (bp); b = BEGV;
else else
{ {
CHECK_NUMBER_COERCE_MARKER (start); CHECK_NUMBER_COERCE_MARKER (start);
...@@ -5467,7 +5473,7 @@ guesswork fails. Normally, an error is signaled in such case. */) ...@@ -5467,7 +5473,7 @@ guesswork fails. Normally, an error is signaled in such case. */)
} }
if (NILP (end)) if (NILP (end))
e = BUF_ZV (bp); e = ZV;
else else
{ {
CHECK_NUMBER_COERCE_MARKER (end); CHECK_NUMBER_COERCE_MARKER (end);
...@@ -5477,7 +5483,7 @@ guesswork fails. Normally, an error is signaled in such case. */) ...@@ -5477,7 +5483,7 @@ guesswork fails. Normally, an error is signaled in such case. */)
if (b > e) if (b > e)
temp = b, b = e, e = temp; 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); args_out_of_range (start, end);
if (NILP (coding_system)) if (NILP (coding_system))
...@@ -5544,6 +5550,11 @@ guesswork fails. Normally, an error is signaled in such case. */) ...@@ -5544,6 +5550,11 @@ guesswork fails. Normally, an error is signaled in such case. */)
} }
object = make_buffer_string (b, e, 0); 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)) if (STRING_MULTIBYTE (object))
object = code_convert_string1 (object, coding_system, Qnil, 1); object = code_convert_string1 (object, coding_system, Qnil, 1);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment