emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/src ChangeLog process.c


From: Andreas Schwab
Subject: [Emacs-diffs] emacs/src ChangeLog process.c
Date: Sun, 28 Jun 2009 20:12:22 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Andreas Schwab <schwab> 09/06/28 20:12:22

Modified files:
        src            : ChangeLog process.c 

Log message:
        (send_process): Keep decoded string in a local
        variable and protect it from GC.  (Bug#3521)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/ChangeLog?cvsroot=emacs&r1=1.7612&r2=1.7613
http://cvs.savannah.gnu.org/viewcvs/emacs/src/process.c?cvsroot=emacs&r1=1.587&r2=1.588

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/src/ChangeLog,v
retrieving revision 1.7612
retrieving revision 1.7613
diff -u -b -r1.7612 -r1.7613
--- ChangeLog   28 Jun 2009 20:01:28 -0000      1.7612
+++ ChangeLog   28 Jun 2009 20:12:20 -0000      1.7613
@@ -1,3 +1,8 @@
+2009-06-28  Andreas Schwab  <address@hidden>
+
+       * process.c (send_process): Keep decoded string in a local
+       variable and protect it from GC.  (Bug#3521)
+
 2009-06-28  Eli Zaretskii  <address@hidden>
 
        * term.c (create_tty_output) [MSDOS]: #ifdef away.

Index: process.c
===================================================================
RCS file: /sources/emacs/emacs/src/process.c,v
retrieving revision 1.587
retrieving revision 1.588
diff -u -b -r1.587 -r1.588
--- process.c   20 Jun 2009 23:23:48 -0000      1.587
+++ process.c   28 Jun 2009 20:12:22 -0000      1.588
@@ -5550,10 +5550,11 @@
   struct Lisp_Process *p = XPROCESS (proc);
   int rv;
   struct coding_system *coding;
-  struct gcpro gcpro1;
+  struct gcpro gcpro1, gcpro2;
   SIGTYPE (*volatile old_sigpipe) ();
+  Lisp_Object dst_object = Qnil;
 
-  GCPRO1 (object);
+  GCPRO2 (object, dst_object);
 
   if (p->raw_status_new)
     update_status (p);
@@ -5632,7 +5633,8 @@
        }
 
       len = coding->produced;
-      buf = SDATA (coding->dst_object);
+      dst_object = coding->dst_object;
+      buf = SDATA (dst_object);
     }
 
   if (pty_max_bytes == 0)
@@ -5764,7 +5766,7 @@
                      /* Running filters might relocate buffers or strings.
                         Arrange to relocate BUF.  */
                      if (CODING_REQUIRE_ENCODING (coding))
-                       offset = buf - SDATA (coding->dst_object);
+                       offset = buf - SDATA (dst_object);
                      else if (BUFFERP (object))
                        offset = BUF_PTR_BYTE_POS (XBUFFER (object), buf);
                      else if (STRINGP (object))
@@ -5777,7 +5779,7 @@
 #endif
 
                      if (CODING_REQUIRE_ENCODING (coding))
-                       buf = offset + SDATA (coding->dst_object);
+                       buf = offset + SDATA (dst_object);
                      else if (BUFFERP (object))
                        buf = BUF_BYTE_ADDRESS (XBUFFER (object), offset);
                      else if (STRINGP (object))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]