From 59fac292ee4f5cd5770fe9b9ec7150365e54f502 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 19 Nov 2001 21:50:44 +0000 Subject: [PATCH] (Fwrite_region): Move choose_write_coding_system to after build_annotations. --- src/fileio.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/fileio.c b/src/fileio.c index 93aae5da502..cc1c7a5a33d 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -4697,12 +4697,7 @@ This does code conversion according to the value of if (!NILP (start) && !STRINGP (start)) validate_region (&start, &end); - GCPRO4 (start, filename, visit, lockname); - - /* Decide the coding-system to encode the data with. */ - choose_write_coding_system (start, end, filename, - append, visit, lockname, &coding); - Vlast_coding_system_used = coding.symbol; + GCPRO5 (start, filename, visit, visit_file, lockname); filename = Fexpand_file_name (filename, Qnil); @@ -4713,15 +4708,12 @@ This does code conversion according to the value of visit_file = Fexpand_file_name (visit, Qnil); else visit_file = filename; - UNGCPRO; if (NILP (lockname)) lockname = visit_file; annotations = Qnil; - GCPRO5 (start, filename, annotations, visit_file, lockname); - /* If the file name has special constructs in it, call the corresponding file handler. */ handler = Ffind_file_name_handler (filename, Qwrite_region); @@ -4767,6 +4759,14 @@ This does code conversion according to the value of GCPRO5 (start, filename, annotations, visit_file, lockname); + /* Decide the coding-system to encode the data with. + We used to make this choice before calling build_annotations, but that + leads to problems when a write-annotate-function takes care of + unsavable chars (as was the case with X-Symbol). */ + choose_write_coding_system (start, end, filename, + append, visit, lockname, &coding); + Vlast_coding_system_used = coding.symbol; + given_buffer = current_buffer; annotations = build_annotations_2 (start, end, coding.pre_write_conversion, annotations); -- 2.39.2