summaryrefslogtreecommitdiff
path: root/debian/patches/thomas_term.patch
blob: f2725819edc1ba6ad30223e5340634958d1c9a33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Patch from Thomas.  See id:87twzoxd3b.fsf@kepler.schwinge.homeip.net.

This shows, for the expect script:

    2946: /dev/ptyp1: starting PTY
    2946: /dev/ptyp1: tf 2 qs(oq) 7461
    2946: /dev/ptyp1: pm 0 uim 0 cb 0
    2946: /dev/ptyp1: tf 2 qs(oq) 3365
    2946: /dev/ptyp1: pm 0 uim 0 cb 0
    2946: /dev/ptyp1: tf 0 qs(oq) 0
    2946: /dev/ptyp1: pm 0 uim 0 cb 0

..., and for a screen window exit:

    2970: /dev/ptyp2: tf 2 qs(oq) 6
    2970: /dev/ptyp2: pm 1 uim 0 cb 0
    2970: /dev/ptyp2: tf 0 qs(oq) 0
    2970: /dev/ptyp2: pm 1 uim 0 cb 1

In both cases, the last iteration (starting with "tf") is the problematic
one.  The size of the output queue is zero in both cases, which is why
Samuel's patch doesn't make a difference.  The expect script case is
different from the screen window exit one in that the latter is running
in packet mode.  So here is my patch -- with no rationale by citing any
standards, or similar.  Any comments on that already?  (I don't feel like
committing such a change without understanding it.)

--- a/term/ptyio.c
+++ b/term/ptyio.c
@@ -331,7 +331,7 @@ pty_io_read (struct trivfs_protid *cred,
 	}
     }
 
-  if (!(termflags & TTY_OPEN) && !qsize (outputq))
+  if (!(termflags & TTY_OPEN) && packet_mode)
     {
       pthread_mutex_unlock (&global_lock);
       return EIO;