diff --git a/src/public/py_dict.c b/src/public/py_dict.c index fee464db..0cc797e2 100644 --- a/src/public/py_dict.c +++ b/src/public/py_dict.c @@ -363,11 +363,12 @@ void py_newdict(py_OutRef out) { } static bool dict__init__(int argc, py_Ref argv) { - py_newnone(py_retval()); if(argc > 2) return TypeError("dict.__init__() takes at most 2 arguments (%d given)", argc); - if(argc == 1) return true; + if(argc == 1) { + py_newnone(py_retval()); + return true; + } assert(argc == 2); - py_TValue* p; int length = pk_arrayview(py_arg(1), &p); if(length == -1) { return TypeError("dict.__init__() expects a list or tuple"); } @@ -382,6 +383,7 @@ static bool dict__init__(int argc, py_Ref argv) { py_Ref val = py_tuple_getitem(tuple, 1); if(!Dict__set(self, key, val)) return false; } + py_newnone(py_retval()); return true; } @@ -403,7 +405,9 @@ static bool dict__getitem__(int argc, py_Ref argv) { static bool dict__setitem__(int argc, py_Ref argv) { PY_CHECK_ARGC(3); Dict* self = py_touserdata(argv); - return Dict__set(self, py_arg(1), py_arg(2)); + bool ok = Dict__set(self, py_arg(1), py_arg(2)); + if(ok) py_newnone(py_retval()); + return ok; } static bool dict__delitem__(int argc, py_Ref argv) {