The commit 7cdac0c41af5af74f7a932b50b070802109aa853 broke SingleRadioButton select() method on 64 bit machine. The widget_get_radioValue() returns 32bit integer while it is compared to 64 bit key.
It can be fixed with the following patch:
diff --git a/snack.c b/snack.c index 172c7d0..0f9f4e7 100644 --- a/snack.c +++ b/snack.c @@ -1096,7 +1101,11 @@ static PyObject * widget_get_radioValue(PyObject self, void closure) { snackWidget w = (snackWidget )self;
+#if SIZEOF_VOID_P <= SIZEOF_LONG return Py_BuildValue("i", newtRadioGetCurrent(w->co)); +#else + return Py_BuildValue("L", newtRadioGetCurrent(w->co)); +#endif }
static void widgetDestructor(PyObject * o) {
Pull request to fix this: https://pagure.io/newt/pull-request/2
The provided patch does not seem to fix the issue after all. However, the issue is still real. The radio button works still in 0.52.17
Does it work with this change?
--- a/snack.c +++ b/snack.c @@ -1096,7 +1096,11 @@ static PyObject * widget_get_radioValue(PyObject *self, void *closure) { snackWidget *w = (snackWidget *)self; - return Py_BuildValue("i", newtRadioGetCurrent(w->co)); +#if SIZEOF_VOID_P <= SIZEOF_LONG + return Py_BuildValue("l", (long)newtRadioGetCurrent(w->co)); +#else + return Py_BuildValue("L", (long long)newtRadioGetCurrent(w->co)); +#endif } static void widgetDestructor(PyObject * o) {
Metadata Update from @mlichvar: - Issue close_status updated to: Fixed - Issue status updated to: Closed (was: Open)