[issue16293] curses.ungetch raises OverflowError when given -1

STINNER Victor report at bugs.python.org
Wed Mar 20 00:54:50 CET 2013


STINNER Victor added the comment:

The following example returns immediatly, whereas I expected it to block. So I consider that ungetch(-1) should fail, but I may be wrong.
---
import curses

def test_screen(screen):
    screen.nodelay(True)
    key = screen.getch()
    screen.nodelay(False)
    curses.ungetch(key)

    screen.getch()

curses.wrapper(test_screen)
---

key is -1, I don't get an OverflowError. The Python implementation of ungetch() casts the Python int to a C "chtype" type, and check for underflow or overflow. On my Fedora 18, chtype is defined in ncurses.h as "unsigned long". My code checking for overflow doesn't detect the overflow for this specific case.

What is your platform (name and version)?

We should always have the same behaviour on any platform (always fail with an error, or always accept -1), so anyway there is a bug.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue16293>
_______________________________________


More information about the Python-bugs-list mailing list