mirror of
https://github.com/python/cpython.git
synced 2024-11-28 12:31:14 +08:00
Issue #28549: Fixed segfault in curses's addch() with ncurses6.
This commit is contained in:
parent
a89d22aff3
commit
0bcd89b859
@ -113,6 +113,8 @@ Core and Builtins
|
||||
Library
|
||||
-------
|
||||
|
||||
- Issue #28549: Fixed segfault in curses's addch() with ncurses6.
|
||||
|
||||
- Issue #28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
|
||||
file with compression before trying to open it without compression. Otherwise
|
||||
it had 50% chance failed with ignore_zeros=True.
|
||||
|
@ -280,7 +280,7 @@ static int
|
||||
PyCurses_ConvertToCchar_t(PyCursesWindowObject *win, PyObject *obj,
|
||||
chtype *ch
|
||||
#ifdef HAVE_NCURSESW
|
||||
, cchar_t *wch
|
||||
, wchar_t *wch
|
||||
#endif
|
||||
)
|
||||
{
|
||||
@ -298,8 +298,7 @@ PyCurses_ConvertToCchar_t(PyCursesWindowObject *win, PyObject *obj,
|
||||
PyUnicode_GET_LENGTH(obj));
|
||||
return 0;
|
||||
}
|
||||
memset(wch->chars, 0, sizeof(wch->chars));
|
||||
wch->chars[0] = buffer[0];
|
||||
*wch = buffer[0];
|
||||
return 2;
|
||||
#else
|
||||
return PyCurses_ConvertToChtype(win, obj, ch);
|
||||
@ -597,7 +596,8 @@ curses_window_addch_impl(PyCursesWindowObject *self, int group_left_1, int y,
|
||||
int type;
|
||||
chtype cch;
|
||||
#ifdef HAVE_NCURSESW
|
||||
cchar_t wch;
|
||||
wchar_t wstr[2];
|
||||
cchar_t wcval;
|
||||
#endif
|
||||
const char *funcname;
|
||||
|
||||
@ -605,14 +605,15 @@ curses_window_addch_impl(PyCursesWindowObject *self, int group_left_1, int y,
|
||||
attr = A_NORMAL;
|
||||
|
||||
#ifdef HAVE_NCURSESW
|
||||
type = PyCurses_ConvertToCchar_t(cwself, ch, &cch, &wch);
|
||||
type = PyCurses_ConvertToCchar_t(cwself, ch, &cch, wstr);
|
||||
if (type == 2) {
|
||||
funcname = "add_wch";
|
||||
wch.attr = attr;
|
||||
wstr[1] = L'\0';
|
||||
setcchar(&wcval, wstr, attr, 0, NULL);
|
||||
if (coordinates_group)
|
||||
rtn = mvwadd_wch(cwself->win,y,x, &wch);
|
||||
rtn = mvwadd_wch(cwself->win,y,x, &wcval);
|
||||
else {
|
||||
rtn = wadd_wch(cwself->win, &wch);
|
||||
rtn = wadd_wch(cwself->win, &wcval);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user