aboutsummaryrefslogtreecommitdiffstats
path: root/src/fileio.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fileio.c')
-rw-r--r--src/fileio.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/fileio.c b/src/fileio.c
index d693369ddf..1d3da63ba5 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -3543,9 +3543,15 @@ actually used.")
else if (nread > 0)
{
struct buffer *prev = current_buffer;
+ int count1;
record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
+
+ /* The call to temp_output_buffer_setup binds
+ standard-output. */
+ count1 = specpdl_ptr - specpdl;
temp_output_buffer_setup (" *code-converting-work*");
+
set_buffer_internal (XBUFFER (Vstandard_output));
current_buffer->enable_multibyte_characters = Qnil;
insert_1_both (read_buf, nread, nread, 0, 0, 0);
@@ -3553,6 +3559,10 @@ actually used.")
val = call2 (Vset_auto_coding_function,
filename, make_number (nread));
set_buffer_internal (prev);
+
+ /* Remove the binding for standard-output. */
+ unbind_to (count1, Qnil);
+
/* Discard the unwind protect for recovering the
current buffer. */
specpdl_ptr--;