diff --git a/mypyc/lib-rt/dict_ops.c b/mypyc/lib-rt/dict_ops.c index b4ae5ad01a38..5c6f31bf6f15 100644 --- a/mypyc/lib-rt/dict_ops.c +++ b/mypyc/lib-rt/dict_ops.c @@ -159,7 +159,7 @@ int CPyDict_Update(PyObject *dict, PyObject *stuff) { int CPyDict_UpdateFromAny(PyObject *dict, PyObject *stuff) { if (PyDict_CheckExact(dict)) { // Argh this sucks - if (PyDict_Check(stuff) || _CPyObject_HasAttr(stuff, mypyc_interned_str.keys)) { + if (PyDict_Check(stuff) || PyObject_HasAttrWithError(stuff, mypyc_interned_str.keys) > 0) { return PyDict_Update(dict, stuff); } else { return PyDict_MergeFromSeq2(dict, stuff, 1); @@ -178,7 +178,7 @@ PyObject *CPyDict_FromAny(PyObject *obj) { if (!dict) { return NULL; } - if (_CPyObject_HasAttr(obj, mypyc_interned_str.keys)) { + if (PyObject_HasAttrWithError(obj, mypyc_interned_str.keys) > 0) { res = PyDict_Update(dict, obj); } else { res = PyDict_MergeFromSeq2(dict, obj, 1); diff --git a/mypyc/lib-rt/pythonsupport.h b/mypyc/lib-rt/pythonsupport.h index 366d014cca73..1d29bdb6ab77 100644 --- a/mypyc/lib-rt/pythonsupport.h +++ b/mypyc/lib-rt/pythonsupport.h @@ -376,16 +376,6 @@ _CPyDictView_New(PyObject *dict, PyTypeObject *type) } #endif -static int -_CPyObject_HasAttr(PyObject *v, PyObject *name) { - PyObject *tmp = NULL; - int result = PyObject_GetOptionalAttr(v, name, &tmp); - if (tmp) { - Py_DECREF(tmp); - } - return result; -} - #if CPY_3_12_FEATURES // These are copied from genobject.c in Python 3.12