]> git.eshelyaron.com Git - emacs.git/commitdiff
(send_process): Properly relocate pointer into data
authorAndreas Schwab <schwab@suse.de>
Tue, 10 Feb 2009 22:32:39 +0000 (22:32 +0000)
committerAndreas Schwab <schwab@suse.de>
Tue, 10 Feb 2009 22:32:39 +0000 (22:32 +0000)
when using encoded data.

src/ChangeLog
src/process.c

index 3db96f64fca057c2c23693624b33f6c5bddfde24..e6f380e2db4930a72d46ab119331ffe94fe12787 100644 (file)
@@ -1,3 +1,8 @@
+2009-02-10  Andreas Schwab  <schwab@suse.de>
+
+       * process.c (send_process): Properly relocate pointer into data
+       when using encoded data.
+
 2009-02-08  ARISAWA Akihiro  <ari@mbf.sphere.ne.jp>
 
        * coding.c (detect_coding_charset): Fix previous change.
index 892a779a1c265ed25a507aef9b3c4929f7ce5742..10b3b714d54b03d1b896e2d59aafe1a98e7be34b 100644 (file)
@@ -5745,7 +5745,9 @@ send_process (proc, buf, len, object)
 
                      /* Running filters might relocate buffers or strings.
                         Arrange to relocate BUF.  */
-                     if (BUFFERP (object))
+                     if (CODING_REQUIRE_ENCODING (coding))
+                       offset = buf - SDATA (coding->dst_object);
+                     else if (BUFFERP (object))
                        offset = BUF_PTR_BYTE_POS (XBUFFER (object), buf);
                      else if (STRINGP (object))
                        offset = buf - SDATA (object);
@@ -5756,7 +5758,9 @@ send_process (proc, buf, len, object)
                      wait_reading_process_output (1, 0, 0, 0, Qnil, NULL, 0);
 #endif
 
-                     if (BUFFERP (object))
+                     if (CODING_REQUIRE_ENCODING (coding))
+                       buf = offset + SDATA (coding->dst_object);
+                     else if (BUFFERP (object))
                        buf = BUF_BYTE_ADDRESS (XBUFFER (object), offset);
                      else if (STRINGP (object))
                        buf = offset + SDATA (object);