diff --git a/python-urwid-test_vterm-NUL.patch b/python-urwid-test_vterm-NUL.patch index ee6f17a..ca184db 100644 --- a/python-urwid-test_vterm-NUL.patch +++ b/python-urwid-test_vterm-NUL.patch @@ -1,9 +1,47 @@ -commit c29b072e1f6df12e237a1294e249943222879536 -Merge: 1a6772e d32f864 -Author: Ian Ward -Date: Tue Aug 22 14:32:39 2017 -0400 +commit 701138a380fac06023e5915448af92ba13614cb9 +Author: aszlig +Date: Thu Feb 11 03:14:07 2016 +0100 - Merge pull request #243 from Sjc1000/master + vterm: Fix handling of NUL characters - Fixed Terminal widget crashes with Python3 + According to the VT100 programmers manual, the NUL character has to be + ignored (at least on our side, because we are not a printer): + + http://vt100.net/docs/tp83/appendixb.html + + According to the bug reporter the VMS console driver inserts NUL + characters after line feeds and our implementation prints those as "?". + + Tested against Python 2.7, 3.2, 3.3, 3.4 and 3.5. + + Signed-off-by: aszlig + Reported-by: Robert Urban +diff --git a/urwid/tests/test_vterm.py b/urwid/tests/test_vterm.py +index 59fe166..4dadfcc 100644 +--- a/urwid/tests/test_vterm.py ++++ b/urwid/tests/test_vterm.py +@@ -143,6 +143,10 @@ class TermTest(unittest.TestCase): + self.write('1\n2\n3\n4\e[2;1f\e[2M') + self.expect('1\n4') + ++ def test_nul(self): ++ self.write('a\0b') ++ self.expect('ab') ++ + def test_movement(self): + self.write('\e[10;20H11\e[10;0f\e[20C\e[K') + self.expect('\n' * 9 + ' ' * 19 + '1') +diff --git a/urwid/vterm.py b/urwid/vterm.py +index cc4eb7f..0f091ea 100644 +--- a/urwid/vterm.py ++++ b/urwid/vterm.py +@@ -671,7 +671,7 @@ class TermCanvas(Canvas): + self.widget.beep() + elif not dc and char in B("\x18\x1a"): # CAN/SUB + self.leave_escape() +- elif not dc and char == B("\x7f"): # DEL ++ elif not dc and char in B("\x00\x7f"): # NUL/DEL + pass # this is ignored + elif self.within_escape: + self.parse_escape(char)