@@ -3719,7 +3719,7 @@ _PyObject_GetNewArguments(PyObject *obj, PyObject **args, PyObject **kwargs)
37193719
37203720 /* We first attempt to fetch the arguments for __new__ by calling
37213721 __getnewargs_ex__ on the object. */
3722- getnewargs_ex = _PyObject_GetAttrId (obj , & PyId___getnewargs_ex__ );
3722+ getnewargs_ex = _PyObject_LookupSpecial (obj , & PyId___getnewargs_ex__ );
37233723 if (getnewargs_ex != NULL ) {
37243724 PyObject * newargs = PyObject_CallObject (getnewargs_ex , NULL );
37253725 Py_DECREF (getnewargs_ex );
@@ -3766,16 +3766,13 @@ _PyObject_GetNewArguments(PyObject *obj, PyObject **args, PyObject **kwargs)
37663766 return -1 ;
37673767 }
37683768 return 0 ;
3769- } else {
3770- if (!PyErr_ExceptionMatches (PyExc_AttributeError )) {
3771- return -1 ;
3772- }
3773- PyErr_Clear ();
3769+ } else if (PyErr_Occurred ()) {
3770+ return -1 ;
37743771 }
37753772
37763773 /* The object does not have __getnewargs_ex__ so we fallback on using
37773774 __getnewargs__ instead. */
3778- getnewargs = _PyObject_GetAttrId (obj , & PyId___getnewargs__ );
3775+ getnewargs = _PyObject_LookupSpecial (obj , & PyId___getnewargs__ );
37793776 if (getnewargs != NULL ) {
37803777 * args = PyObject_CallObject (getnewargs , NULL );
37813778 Py_DECREF (getnewargs );
@@ -3791,11 +3788,8 @@ _PyObject_GetNewArguments(PyObject *obj, PyObject **args, PyObject **kwargs)
37913788 }
37923789 * kwargs = NULL ;
37933790 return 0 ;
3794- } else {
3795- if (!PyErr_ExceptionMatches (PyExc_AttributeError )) {
3796- return -1 ;
3797- }
3798- PyErr_Clear ();
3791+ } else if (PyErr_Occurred ()) {
3792+ return -1 ;
37993793 }
38003794
38013795 /* The object does not have __getnewargs_ex__ and __getnewargs__. This may
0 commit comments