Commit b9607587 authored by Andreas Schwab's avatar Andreas Schwab
Browse files

(send_process): Keep decoded string in a local

variable and protect it from GC.  (Bug#3521)
parent 485422be
2009-06-28 Andreas Schwab <schwab@linux-m68k.org>
* process.c (send_process): Keep decoded string in a local
variable and protect it from GC. (Bug#3521)
2009-06-28 Eli Zaretskii <eliz@gnu.org> 2009-06-28 Eli Zaretskii <eliz@gnu.org>
   
* term.c (create_tty_output) [MSDOS]: #ifdef away. * term.c (create_tty_output) [MSDOS]: #ifdef away.
......
...@@ -5550,10 +5550,11 @@ send_process (proc, buf, len, object) ...@@ -5550,10 +5550,11 @@ send_process (proc, buf, len, object)
struct Lisp_Process *p = XPROCESS (proc); struct Lisp_Process *p = XPROCESS (proc);
int rv; int rv;
struct coding_system *coding; struct coding_system *coding;
struct gcpro gcpro1; struct gcpro gcpro1, gcpro2;
SIGTYPE (*volatile old_sigpipe) (); SIGTYPE (*volatile old_sigpipe) ();
Lisp_Object dst_object = Qnil;
GCPRO1 (object); GCPRO2 (object, dst_object);
if (p->raw_status_new) if (p->raw_status_new)
update_status (p); update_status (p);
...@@ -5632,7 +5633,8 @@ send_process (proc, buf, len, object) ...@@ -5632,7 +5633,8 @@ send_process (proc, buf, len, object)
} }
len = coding->produced; len = coding->produced;
buf = SDATA (coding->dst_object); dst_object = coding->dst_object;
buf = SDATA (dst_object);
} }
if (pty_max_bytes == 0) if (pty_max_bytes == 0)
...@@ -5764,7 +5766,7 @@ send_process (proc, buf, len, object) ...@@ -5764,7 +5766,7 @@ send_process (proc, buf, len, object)
/* Running filters might relocate buffers or strings. /* Running filters might relocate buffers or strings.
Arrange to relocate BUF. */ Arrange to relocate BUF. */
if (CODING_REQUIRE_ENCODING (coding)) if (CODING_REQUIRE_ENCODING (coding))
offset = buf - SDATA (coding->dst_object); offset = buf - SDATA (dst_object);
else if (BUFFERP (object)) else if (BUFFERP (object))
offset = BUF_PTR_BYTE_POS (XBUFFER (object), buf); offset = BUF_PTR_BYTE_POS (XBUFFER (object), buf);
else if (STRINGP (object)) else if (STRINGP (object))
...@@ -5777,7 +5779,7 @@ send_process (proc, buf, len, object) ...@@ -5777,7 +5779,7 @@ send_process (proc, buf, len, object)
#endif #endif
if (CODING_REQUIRE_ENCODING (coding)) if (CODING_REQUIRE_ENCODING (coding))
buf = offset + SDATA (coding->dst_object); buf = offset + SDATA (dst_object);
else if (BUFFERP (object)) else if (BUFFERP (object))
buf = BUF_BYTE_ADDRESS (XBUFFER (object), offset); buf = BUF_BYTE_ADDRESS (XBUFFER (object), offset);
else if (STRINGP (object)) else if (STRINGP (object))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment