diff options
| author | Eli Zaretskii | 2015-10-03 14:49:16 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2015-10-03 14:49:16 +0300 |
| commit | 265d525a5ef9f59a6c26d40cd560ae43c3ae1d2c (patch) | |
| tree | 437fe19f627c509a4d011c004f79c1972fe1eb11 /src | |
| parent | 658f2c450d17357d8c09a07ca92c2ca980c3c797 (diff) | |
| download | emacs-265d525a5ef9f59a6c26d40cd560ae43c3ae1d2c.tar.gz emacs-265d525a5ef9f59a6c26d40cd560ae43c3ae1d2c.zip | |
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
<schwab@linux-m68k.org>. (Bug#21602)
Diffstat (limited to 'src')
| -rw-r--r-- | src/fileio.c | 23 |
1 files 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 | |||
| 4593 | 4593 | ||
| 4594 | if (!force_raw_text | 4594 | if (!force_raw_text |
| 4595 | && !NILP (Ffboundp (Vselect_safe_coding_system_function))) | 4595 | && !NILP (Ffboundp (Vselect_safe_coding_system_function))) |
| 4596 | /* Confirm that VAL can surely encode the current region. */ | 4596 | { |
| 4597 | val = call5 (Vselect_safe_coding_system_function, | 4597 | /* Confirm that VAL can surely encode the current region. */ |
| 4598 | start, end, val, Qnil, filename); | 4598 | val = call5 (Vselect_safe_coding_system_function, |
| 4599 | start, end, val, Qnil, filename); | ||
| 4600 | CHECK_CODING_SYSTEM (val); | ||
| 4601 | } | ||
| 4599 | 4602 | ||
| 4600 | /* If the decided coding-system doesn't specify end-of-line | 4603 | /* If the decided coding-system doesn't specify end-of-line |
| 4601 | format, we use that of | 4604 | format, we use that of |
| 4602 | `default-buffer-file-coding-system'. */ | 4605 | `default-buffer-file-coding-system'. */ |
| 4603 | if (! using_default_coding | 4606 | if (! using_default_coding) |
| 4604 | && ! NILP (BVAR (&buffer_defaults, buffer_file_coding_system))) | 4607 | { |
| 4605 | val = (coding_inherit_eol_type | 4608 | Lisp_Object dflt = BVAR (&buffer_defaults, buffer_file_coding_system); |
| 4606 | (val, BVAR (&buffer_defaults, buffer_file_coding_system))); | 4609 | |
| 4610 | if (! NILP (dflt)) | ||
| 4611 | { | ||
| 4612 | CHECK_CODING_SYSTEM (dflt); | ||
| 4613 | val = (coding_inherit_eol_type (val, dflt)); | ||
| 4614 | } | ||
| 4615 | } | ||
| 4607 | 4616 | ||
| 4608 | /* If we decide not to encode text, use `raw-text' or one of its | 4617 | /* If we decide not to encode text, use `raw-text' or one of its |
| 4609 | subsidiaries. */ | 4618 | subsidiaries. */ |