GNU bug report logs -
#24531
process-send-string seems to truncate lines over 4096 characters
Previous Next
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
I see that this bug is about 13 years old. I think there's a pretty
obvious solution: process-connection-type should default to nil.
Otherwise this is a footgun just waiting to happen for anyone writing
process-interaction code in Emacs.
But if we don't do that, we should at least document it. See my
attached patch.
Btw, just to feed the fire, here's my own reproducer:
(with-temp-buffer
(make-process :name "broken" :buffer (current-buffer) :command '("cat"))
(process-send-string nil (make-string 10000 ?x))
(process-send-eof)
(sit-for 1)
(cons (point-min) (point-max)))
[0001-Include-warning-about-long-line-truncation-in-proces.patch (text/x-patch, inline)]
From dcfd129b3f08273a8b0705f03b6074443a7a33c1 Mon Sep 17 00:00:00 2001
From: Spencer Baugh <sbaugh <at> janestreet.com>
Date: Thu, 20 Jul 2023 16:13:56 -0400
Subject: [PATCH] Include warning about long line truncation in
process-send-string
Maybe we can't fix this. But we can at least warn the user about it!
To have no warning anywhere about this default behavior which silently
discards data, is very user-hostile.
* src/process.c (Fprocess_send_string): Include a warning about long
line truncation (bug#6149)
---
src/process.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/process.c b/src/process.c
index 67d1d3e425f..82ace1b3a41 100644
--- a/src/process.c
+++ b/src/process.c
@@ -6755,6 +6755,8 @@ DEFUN ("process-send-string", Fprocess_send_string, Sprocess_send_string,
of which depends on the process connection type and the operating
system), it is sent in several bunches. This may happen even for
shorter strings. Output from processes can arrive in between bunches.
+If the process connection type is `pty', then long lines present in
+STRING may be truncated depending on the operating system.
If PROCESS is a non-blocking network process that hasn't been fully
set up yet, this function will block until socket setup has completed. */)
--
2.39.3
This bug report was last modified 1 year and 322 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.