gh-111789: Use PyDict_GetItemRef() in Python/bltinmodule.c (gh-112081)

This commit is contained in:
Serhiy Storchaka 2023-11-27 19:52:54 +02:00 committed by GitHub
parent d8908932fc
commit 395fd9c180
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -5,7 +5,6 @@
#include "pycore_call.h" // _PyObject_CallNoArgs() #include "pycore_call.h" // _PyObject_CallNoArgs()
#include "pycore_ceval.h" // _PyEval_Vector() #include "pycore_ceval.h" // _PyEval_Vector()
#include "pycore_compile.h" // _PyAST_Compile() #include "pycore_compile.h" // _PyAST_Compile()
#include "pycore_dict.h" // _PyDict_GetItemWithError()
#include "pycore_long.h" // _PyLong_CompactValue #include "pycore_long.h" // _PyLong_CompactValue
#include "pycore_modsupport.h" // _PyArg_NoKwnames() #include "pycore_modsupport.h" // _PyArg_NoKwnames()
#include "pycore_object.h" // _Py_AddToAllObjects() #include "pycore_object.h" // _Py_AddToAllObjects()
@ -141,18 +140,16 @@ builtin___build_class__(PyObject *self, PyObject *const *args, Py_ssize_t nargs,
goto error; goto error;
} }
meta = _PyDict_GetItemWithError(mkw, &_Py_ID(metaclass)); if (PyDict_GetItemRef(mkw, &_Py_ID(metaclass), &meta) < 0) {
goto error;
}
if (meta != NULL) { if (meta != NULL) {
Py_INCREF(meta);
if (PyDict_DelItem(mkw, &_Py_ID(metaclass)) < 0) { if (PyDict_DelItem(mkw, &_Py_ID(metaclass)) < 0) {
goto error; goto error;
} }
/* metaclass is explicitly given, check if it's indeed a class */ /* metaclass is explicitly given, check if it's indeed a class */
isclass = PyType_Check(meta); isclass = PyType_Check(meta);
} }
else if (PyErr_Occurred()) {
goto error;
}
} }
if (meta == NULL) { if (meta == NULL) {
/* if there are no bases, use type: */ /* if there are no bases, use type: */