changeset 23595:e8bf0c9f869d

(Fbase64_decode_region): Fix previous change. n
author Kenichi Handa <handa@m17n.org>
date Sat, 31 Oct 1998 05:12:07 +0000
parents 05e90accc380
children 8dcbcad4482c
files src/fns.c
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/fns.c	Fri Oct 30 19:47:56 1998 +0000
+++ b/src/fns.c	Sat Oct 31 05:12:07 1998 +0000
@@ -2990,15 +2990,20 @@
      and delete the old.  (Insert first in order to preserve markers.)  */
   /* We insert two spaces, then insert the decoded text in between
      them, at last, delete those extra two spaces.  This is to avoid
-     byte combining.  */
+     byte combining while inserting.  */
   TEMP_SET_PT_BOTH (XFASTINT (beg), ibeg);
   insert_1_both ("  ", 2, 2, 0, 1, 0);
   TEMP_SET_PT_BOTH (XFASTINT (beg) + 1, ibeg + 1);  
   insert (decoded, decoded_length);
   inserted_chars = PT - (XFASTINT (beg) + 1);
-  del_range_both (PT, PT_BYTE, XFASTINT (end) + inserted_chars + 2,
+  /* At first delete the original text.  This never cause byte
+     combining.  */
+  del_range_both (PT + 1, PT_BYTE + 1, XFASTINT (end) + inserted_chars + 2,
 		  iend + decoded_length + 2, 1);
-  del_range_both (XFASTINT (beg), ibeg, XFASTINT (beg) + 1, ibeg + 1, 1);
+  /* Next delete the extra spaces.  This will cause byte combining
+     error.  */
+  del_range_both (PT, PT_BYTE, PT + 1, PT_BYTE + 1, 0);
+  del_range_both (XFASTINT (beg), ibeg, XFASTINT (beg) + 1, ibeg + 1, 0);
   inserted_chars = PT - XFASTINT (beg);
 
   /* If point was outside of the region, restore it exactly; else just