diff options
Diffstat (limited to 'Objects/classobject.c')
-rw-r--r-- | Objects/classobject.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/Objects/classobject.c b/Objects/classobject.c index 9870b6e..d4a873f6 100644 --- a/Objects/classobject.c +++ b/Objects/classobject.c @@ -279,9 +279,10 @@ addaccess(class, inst) } object * -newinstanceobject(class, arg) +newinstanceobject(class, arg, kw) object *class; object *arg; + object *kw; { register instanceobject *inst; object *init; @@ -303,16 +304,16 @@ newinstanceobject(class, arg) init = instance_getattr1(inst, "__init__"); if (init == NULL) { err_clear(); - if (arg != NULL && !(is_tupleobject(arg) && - gettuplesize(arg) == 0)) { + if (arg != NULL && (!is_tupleobject(arg) || + gettuplesize(arg) != 0) || kw != NULL) { err_setstr(TypeError, - "this classobject() takes no arguments"); + "this constructor takes no arguments"); DECREF(inst); inst = NULL; } } else { - object *res = call_object(init, arg); + object *res = PyEval_CallObjectWithKeywords(init, arg, kw); DECREF(init); if (res == NULL) { DECREF(inst); |