Fix Python low-level static member setters.

The low-level API for setting static member variables stopped working
when the fastunpack option was turned on by default. The PyMethodDef
setup requires METH_O, not METH_VARARGS with fastunpack.
This commit is contained in:
William S Fulton 2019-03-20 21:44:34 +00:00
commit 826f1448b8
2 changed files with 26 additions and 1 deletions

View file

@ -45,3 +45,28 @@ if not cvar.StaticBase_statty == 22: raise RuntimeError("cvar statty not 22")
if not StaticBase.grab_statty_base() == 22: raise RuntimeError("cvar statty not 22")
if not cvar.StaticDerived_statty == 222: raise RuntimeError("cvar statty not 222")
if not StaticDerived.grab_statty_derived() == 222: raise RuntimeError("cvar statty not 222")
# Restore
cvar.StaticMemberTest_static_int = 99
cvar.StaticBase_statty = 11
cvar.StaticDerived_statty = 111
# Low-level layer testing
if not is_python_builtin():
from cpp_static import _cpp_static
if not _cpp_static.StaticMemberTest_static_int_get() == 99: raise RuntimeError("low-level static_int not 99")
if not StaticMemberTest.grab_int() == 99: raise RuntimeError("low-level static_int not 99")
_cpp_static.StaticMemberTest_static_int_set(10)
if not _cpp_static.StaticMemberTest_static_int_get() == 10: raise RuntimeError("low-level static_int not 10")
if not StaticMemberTest.grab_int() == 10: raise RuntimeError("low-level static_int not 10")
if not _cpp_static.StaticBase_statty_get() == 11: raise RuntimeError("low-level statty not 11")
if not StaticBase.grab_statty_base() == 11: raise RuntimeError("low-level statty not 11")
if not _cpp_static.StaticDerived_statty_get() == 111: raise RuntimeError("low-level statty not 111")
if not StaticDerived.grab_statty_derived() == 111: raise RuntimeError("low-level statty not 111")
_cpp_static.StaticBase_statty_set(22)
_cpp_static.StaticDerived_statty_set(222)
if not _cpp_static.StaticBase_statty_get() == 22: raise RuntimeError("low-level statty not 22")
if not StaticBase.grab_statty_base() == 22: raise RuntimeError("low-level statty not 22")
if not _cpp_static.StaticDerived_statty_get() == 222: raise RuntimeError("low-level statty not 222")
if not StaticDerived.grab_statty_derived() == 222: raise RuntimeError("low-level statty not 222")

View file

@ -2426,7 +2426,7 @@ public:
void add_method(String *name, String *function, int kw, Node *n = 0, int funpack = 0, int num_required = -1, int num_arguments = -1) {
String * meth_str = NewString("");
if (!kw) {
if (n && funpack) {
if (funpack) {
if (num_required == 0 && num_arguments == 0) {
Printf(meth_str, "\t { \"%s\", %s, METH_NOARGS, ", name, function);
} else if (num_required == 1 && num_arguments == 1) {