changeset 29287:5fb859bdf5bd

(Fcall_process): Fix previous change.
author Kenichi Handa <handa@m17n.org>
date Mon, 29 May 2000 12:52:44 +0000
parents c0fe782084bb
children dbb0996702bd
files src/callproc.c
diffstat 1 files changed, 11 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/callproc.c	Mon May 29 12:07:29 2000 +0000
+++ b/src/callproc.c	Mon May 29 12:52:44 2000 +0000
@@ -730,7 +730,6 @@
     saved_coding = process_coding;
     if (process_coding.composing != COMPOSITION_DISABLED)
       coding_allocate_composition_data (&process_coding, PT);
-
     while (1)
       {
 	/* Repeatedly read until we've filled as much as possible
@@ -773,6 +772,8 @@
 	      repeat_decoding:
 		size = decoding_buffer_size (&process_coding, nread);
 		decoding_buf = (char *) xmalloc (size);
+		if (process_coding.cmp_data)
+		  process_coding.cmp_data->char_offset = PT;
 		decode_coding (&process_coding, bufptr, decoding_buf,
 			       nread, size);
 		if (display_on_the_fly
@@ -790,13 +791,8 @@
 		    continue;
 		  }
 		if (process_coding.produced > 0)
-		  {
-		    insert_1_both (decoding_buf, process_coding.produced_char,
-				   process_coding.produced, 0, 1, 0);
-		    if (process_coding.cmp_data)
-		      coding_restore_composition (&process_coding,
-						  Fcurrent_buffer ());
-		  }
+		  insert_1_both (decoding_buf, process_coding.produced_char,
+				 process_coding.produced, 0, 1, 0);
 		xfree (decoding_buf);
 		nread -= process_coding.consumed;
 		carryover = nread;
@@ -810,7 +806,7 @@
 		    /* The decoding ended because of insufficient data
 		       area to record information about composition.
 		       We must try decoding with additional data area
-		       before reading process output.  */
+		       before reading more output for the process.  */
 		    coding_allocate_composition_data (&process_coding, PT);
 		    goto repeat_decoding;
 		  }
@@ -840,8 +836,12 @@
       }
   give_up: ;
 
-    if (process_coding.cmp_data)
-      coding_free_composition_data (&process_coding);
+    if (!NILP (buffer)
+	&& process_coding.cmp_data)
+      {
+	coding_restore_composition (&process_coding, Fcurrent_buffer ());
+	coding_free_composition_data (&process_coding);
+      }
 
     Vlast_coding_system_used = process_coding.symbol;