This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RXVT PATCH] Stop potential infinite loop in rxvt


Steve,
I've been investigating the recent report of a "hang" in rxvt
when you do something like this:

  TERM=linux emacx-nox -q

AFAICT, the problem is that the linux terminfo has some escape sequences
that, IMO, rxvt is interpreting incorrectly.  Specifically, rxvt seems
to be interpreting '^[[?c' as equivalent to '^[[c' when I don't think it
should be.

The '^[[0c' escape sequence is sent by a client to a terminal to find
out what kind of terminal it is using.  rxvt was replying to the
question mark version also.  Then, if the response was echoed, rxvt
would respond to that too and so on, ad infinitum.

The patch below fixes this behavior and also makes sure that rxvt
does not reply to '^[[1c' as if it was '^[[0c'.  Would you consider
applying this patch to the official rxvt source?

AFAICT, the above command failed back in cygwin-1.3.12, too, so this
doesn't seem to be a cygwin problem or, at least, it isn't a recent
one.

cgf

--- old-rxvt-2.7.2/src/command.c	2002-11-16 01:45:50.000000000 -0500
+++ new-rxvt-2.7.2/src/command.c	2002-11-16 01:43:48.000000000 -0500
@@ -2862,7 +2862,7 @@
     case CSI_DA:		/* device attributes */
 	if (priv == '>')	/* secondary device attributes */
 	    tt_printf("\033[>%d;%s;0c", 'R', VSTRING);
-	else
+	else if (!priv && arg[0] == 0)
 	    tt_printf(VT100_ANS);
 	break;
     case CSI_SGR:		/* select graphic rendition */

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]