summaryrefslogtreecommitdiffstats
path: root/Python/codecs.c
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-08-23 20:59:00 (GMT)
committerGitHub <noreply@github.com>2023-08-23 20:59:00 (GMT)
commit4dc9f4893084f7c3acf78a0384620cd44f604a0d (patch)
treee68ff4cc214daa87aedf3f508ad07c3f0d61ff66 /Python/codecs.c
parent1700d34d314f5304a7a75363bda295a8c15c371f (diff)
downloadcpython-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.c12
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;
}