diff --git a/mypyc/lib-rt/dict_ops.c b/mypyc/lib-rt/dict_ops.c index c4dbe8d31c32..2de5f4a9e7a4 100644 --- a/mypyc/lib-rt/dict_ops.c +++ b/mypyc/lib-rt/dict_ops.c @@ -69,7 +69,9 @@ PyObject *CPyDict_GetWithNone(PyObject *dict, PyObject *key) { PyObject *CPyDict_SetDefault(PyObject *dict, PyObject *key, PyObject *value) { if (PyDict_CheckExact(dict)){ - return PyDict_SetDefault(dict, key, value); + PyObject* ret = PyDict_SetDefault(dict, key, value); + Py_XINCREF(ret); + return ret; } return PyObject_CallMethod(dict, "setdefault", "(OO)", key, value); } diff --git a/mypyc/primitives/dict_ops.py b/mypyc/primitives/dict_ops.py index 267f9d79179d..e176ffcac316 100644 --- a/mypyc/primitives/dict_ops.py +++ b/mypyc/primitives/dict_ops.py @@ -124,7 +124,6 @@ arg_types=[dict_rprimitive, object_rprimitive, object_rprimitive], return_type=object_rprimitive, c_function_name='CPyDict_SetDefault', - is_borrowed=True, error_kind=ERR_MAGIC) # dict.setdefault(key)