mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Issue #28549: Fixed segfault in curses's addch() with ncurses6.
This commit is contained in:
commit
e1ac09d137
2 changed files with 11 additions and 8 deletions
|
@ -99,6 +99,8 @@ Core and Builtins
|
||||||
Library
|
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
|
- 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
|
file with compression before trying to open it without compression. Otherwise
|
||||||
it had 50% chance failed with ignore_zeros=True.
|
it had 50% chance failed with ignore_zeros=True.
|
||||||
|
|
|
@ -280,7 +280,7 @@ static int
|
||||||
PyCurses_ConvertToCchar_t(PyCursesWindowObject *win, PyObject *obj,
|
PyCurses_ConvertToCchar_t(PyCursesWindowObject *win, PyObject *obj,
|
||||||
chtype *ch
|
chtype *ch
|
||||||
#ifdef HAVE_NCURSESW
|
#ifdef HAVE_NCURSESW
|
||||||
, cchar_t *wch
|
, wchar_t *wch
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -298,8 +298,7 @@ PyCurses_ConvertToCchar_t(PyCursesWindowObject *win, PyObject *obj,
|
||||||
PyUnicode_GET_LENGTH(obj));
|
PyUnicode_GET_LENGTH(obj));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
memset(wch->chars, 0, sizeof(wch->chars));
|
*wch = buffer[0];
|
||||||
wch->chars[0] = buffer[0];
|
|
||||||
return 2;
|
return 2;
|
||||||
#else
|
#else
|
||||||
return PyCurses_ConvertToChtype(win, obj, ch);
|
return PyCurses_ConvertToChtype(win, obj, ch);
|
||||||
|
@ -597,7 +596,8 @@ curses_window_addch_impl(PyCursesWindowObject *self, int group_left_1, int y,
|
||||||
int type;
|
int type;
|
||||||
chtype cch;
|
chtype cch;
|
||||||
#ifdef HAVE_NCURSESW
|
#ifdef HAVE_NCURSESW
|
||||||
cchar_t wch;
|
wchar_t wstr[2];
|
||||||
|
cchar_t wcval;
|
||||||
#endif
|
#endif
|
||||||
const char *funcname;
|
const char *funcname;
|
||||||
|
|
||||||
|
@ -605,14 +605,15 @@ curses_window_addch_impl(PyCursesWindowObject *self, int group_left_1, int y,
|
||||||
attr = A_NORMAL;
|
attr = A_NORMAL;
|
||||||
|
|
||||||
#ifdef HAVE_NCURSESW
|
#ifdef HAVE_NCURSESW
|
||||||
type = PyCurses_ConvertToCchar_t(cwself, ch, &cch, &wch);
|
type = PyCurses_ConvertToCchar_t(cwself, ch, &cch, wstr);
|
||||||
if (type == 2) {
|
if (type == 2) {
|
||||||
funcname = "add_wch";
|
funcname = "add_wch";
|
||||||
wch.attr = attr;
|
wstr[1] = L'\0';
|
||||||
|
setcchar(&wcval, wstr, attr, 0, NULL);
|
||||||
if (coordinates_group)
|
if (coordinates_group)
|
||||||
rtn = mvwadd_wch(cwself->win,y,x, &wch);
|
rtn = mvwadd_wch(cwself->win,y,x, &wcval);
|
||||||
else {
|
else {
|
||||||
rtn = wadd_wch(cwself->win, &wch);
|
rtn = wadd_wch(cwself->win, &wcval);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue