summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-01-26 11:16:30 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-01-26 11:16:30 (GMT)
commit47efb4a5dc9cdf3f59362beb9a04c5c6bdd09f81 (patch)
treeb3e5115125360618a02a9615a643cbebe4aa7e75 /Modules
parent4e5d9eac2ca03debecbb9c6ed873303d04ead06a (diff)
downloadcpython-47efb4a5dc9cdf3f59362beb9a04c5c6bdd09f81.zip
cpython-47efb4a5dc9cdf3f59362beb9a04c5c6bdd09f81.tar.gz
cpython-47efb4a5dc9cdf3f59362beb9a04c5c6bdd09f81.tar.bz2
Issue #19361: JSON decoder now raises JSONDecodeError instead of ValueError.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_json.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/Modules/_json.c b/Modules/_json.c
index 9430990..0bf475e 100644
--- a/Modules/_json.c
+++ b/Modules/_json.c
@@ -312,23 +312,22 @@ escape_unicode(PyObject *pystr)
static void
raise_errmsg(char *msg, PyObject *s, Py_ssize_t end)
{
- /* Use the Python function json.decoder.errmsg to raise a nice
- looking ValueError exception */
- static PyObject *errmsg_fn = NULL;
- PyObject *pymsg;
- if (errmsg_fn == NULL) {
+ /* Use JSONDecodeError exception to raise a nice looking ValueError subclass */
+ static PyObject *JSONDecodeError = NULL;
+ PyObject *exc;
+ if (JSONDecodeError == NULL) {
PyObject *decoder = PyImport_ImportModule("json.decoder");
if (decoder == NULL)
return;
- errmsg_fn = PyObject_GetAttrString(decoder, "errmsg");
+ JSONDecodeError = PyObject_GetAttrString(decoder, "JSONDecodeError");
Py_DECREF(decoder);
- if (errmsg_fn == NULL)
+ if (JSONDecodeError == NULL)
return;
}
- pymsg = PyObject_CallFunction(errmsg_fn, "(zOn)", msg, s, end);
- if (pymsg) {
- PyErr_SetObject(PyExc_ValueError, pymsg);
- Py_DECREF(pymsg);
+ exc = PyObject_CallFunction(JSONDecodeError, "(zOn)", msg, s, end);
+ if (exc) {
+ PyErr_SetObject(JSONDecodeError, exc);
+ Py_DECREF(exc);
}
}