diff options
author | Victor Stinner <vstinner@python.org> | 2023-08-23 20:59:00 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-23 20:59:00 (GMT) |
commit | 4dc9f4893084f7c3acf78a0384620cd44f604a0d (patch) | |
tree | e68ff4cc214daa87aedf3f508ad07c3f0d61ff66 /Python/codecs.c | |
parent | 1700d34d314f5304a7a75363bda295a8c15c371f (diff) | |
download | cpython-4dc9f4893084f7c3acf78a0384620cd44f604a0d.zip cpython-4dc9f4893084f7c3acf78a0384620cd44f604a0d.tar.gz cpython-4dc9f4893084f7c3acf78a0384620cd44f604a0d.tar.bz2 |
gh-108308: Replace _PyDict_GetItemStringWithError() (#108372)
Replace _PyDict_GetItemStringWithError() calls with
PyDict_GetItemStringRef() which returns a strong reference to the
item.
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Diffstat (limited to 'Python/codecs.c')
-rw-r--r-- | Python/codecs.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/Python/codecs.c b/Python/codecs.c index 3c41851..87ae896 100644 --- a/Python/codecs.c +++ b/Python/codecs.c @@ -10,7 +10,6 @@ Copyright (c) Corporation for National Research Initiatives. #include "Python.h" #include "pycore_call.h" // _PyObject_CallNoArgs() -#include "pycore_dict.h" // _PyDict_GetItemStringWithError() #include "pycore_interp.h" // PyInterpreterState.codec_search_path #include "pycore_pyerrors.h" // _PyErr_FormatNote() #include "pycore_pystate.h" // _PyInterpreterState_GET() @@ -618,20 +617,19 @@ int PyCodec_RegisterError(const char *name, PyObject *error) the error handling callback for strict encoding will be returned. */ PyObject *PyCodec_LookupError(const char *name) { - PyObject *handler = NULL; - PyInterpreterState *interp = _PyInterpreterState_GET(); if (interp->codec_search_path == NULL && _PyCodecRegistry_Init()) return NULL; if (name==NULL) name = "strict"; - handler = _PyDict_GetItemStringWithError(interp->codec_error_registry, name); - if (handler) { - Py_INCREF(handler); + PyObject *handler; + if (PyDict_GetItemStringRef(interp->codec_error_registry, name, &handler) < 0) { + return NULL; } - else if (!PyErr_Occurred()) { + if (handler == NULL) { PyErr_Format(PyExc_LookupError, "unknown error handler name '%.400s'", name); + return NULL; } return handler; } |