Package: zsh
Version: 4.3.9-3
Severity: normal

After typing Ctrl-Z (to background a graphical application) and "bg":
sometimes the escape sequences are output to the terminal, even though
they are interpreted by zsh.

I've attached a patch (modified upstream patch for zsh 4.3.9).

For discussions about this problem, see the following threads:
  http://www.zsh.org/mla/workers/2009/msg00411.html
  http://www.zsh.org/mla/users/2009/msg00327.html

-- System Information:
Debian Release: squeeze/sid
  APT prefers oldstable
  APT policy: (500, 'oldstable'), (500, 'unstable'), (500, 'stable'), (1, 
'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.26.5-20080922 (SMP w/2 CPU cores; PREEMPT)
Locale: LANG=POSIX, LC_CTYPE=en_US.ISO8859-1 (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/bash

Versions of packages zsh depends on:
ii  libc6                     2.9-6          GNU C Library: Shared libraries
ii  libcap2                   1:2.16-4       support for getting/setting POSIX.
ii  libncursesw5              5.7+20090314-1 shared libraries for terminal hand

Versions of packages zsh recommends:
ii  libc6                         2.9-6      GNU C Library: Shared libraries
ii  libpcre3                      7.8-2      Perl 5 Compatible Regular Expressi

Versions of packages zsh suggests:
ii  zsh-doc                       4.3.9-3    zsh documentation - info/HTML form

-- no debconf information
--- Src/utils.c.orig    2008-10-31 10:40:18.000000000 +0100
+++ Src/utils.c 2009-03-25 13:55:54.000000000 +0100
@@ -1437,13 +1437,13 @@
 #  ifndef TCSADRAIN
 #   define TCSADRAIN 1 /* XXX Princeton's include files are screwed up */
 #  endif
-       tcsetattr(SHTTY, TCSADRAIN, &ti->tio);
-    /* if (tcsetattr(SHTTY, TCSADRAIN, &ti->tio) == -1) */
+       while (tcsetattr(SHTTY, TCSADRAIN, &ti->tio) == -1 && errno == EINTR)
+           ;
 # else
-       ioctl(SHTTY, TCSETS, &ti->tio);
-    /* if (ioctl(SHTTY, TCSETS, &ti->tio) == -1) */
+       while (ioctl(SHTTY, TCSETS, &ti->tio) == -1 && errno == EINTR)
+           ;
 # endif
-       /*      zerr("settyinfo: %e",errno)*/ ;
+       /*      zerr("settyinfo: %e",errno);*/
 #else
 # ifdef HAVE_TERMIO_H
        ioctl(SHTTY, TCSETA, &ti->tio);

Reply via email to