From 265d525a5ef9f59a6c26d40cd560ae43c3ae1d2c Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 Oct 2015 14:49:16 +0300 Subject: [PATCH] More validatation of coding system in 'write-region' * src/coding.c (choose_write_coding_system): More validation of coding-system from various sources. Suggested by Andreas Schwab . (Bug#21602) --- src/fileio.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/fileio.c b/src/fileio.c index 65aaf572fd7..15bebdf09fa 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -4593,17 +4593,26 @@ choose_write_coding_system (Lisp_Object start, Lisp_Object end, Lisp_Object file if (!force_raw_text && !NILP (Ffboundp (Vselect_safe_coding_system_function))) - /* Confirm that VAL can surely encode the current region. */ - val = call5 (Vselect_safe_coding_system_function, - start, end, val, Qnil, filename); + { + /* Confirm that VAL can surely encode the current region. */ + val = call5 (Vselect_safe_coding_system_function, + start, end, val, Qnil, filename); + CHECK_CODING_SYSTEM (val); + } /* If the decided coding-system doesn't specify end-of-line format, we use that of `default-buffer-file-coding-system'. */ - if (! using_default_coding - && ! NILP (BVAR (&buffer_defaults, buffer_file_coding_system))) - val = (coding_inherit_eol_type - (val, BVAR (&buffer_defaults, buffer_file_coding_system))); + if (! using_default_coding) + { + Lisp_Object dflt = BVAR (&buffer_defaults, buffer_file_coding_system); + + if (! NILP (dflt)) + { + CHECK_CODING_SYSTEM (dflt); + val = (coding_inherit_eol_type (val, dflt)); + } + } /* If we decide not to encode text, use `raw-text' or one of its subsidiaries. */ -- 2.39.2