mirror of
https://github.com/python/cpython
synced 2024-09-05 08:17:45 +00:00
gh-111789: Use PyDict_GetItemRef() in Python/bltinmodule.c (gh-112081)
This commit is contained in:
parent
d8908932fc
commit
395fd9c180
|
@ -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: */
|
||||||
|
|
Loading…
Reference in a new issue