bpo-38942: Fix possible assertion failures in csv.Dialect()
This commit is contained in:
parent
bea33f5e1d
commit
323de6506d
|
@ -0,0 +1 @@
|
|||
Fix possible assertion failures when creating a :class:`csv.Dialect` object.
|
|
@ -394,8 +394,14 @@ dialect_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
|
|||
Py_XINCREF(strict);
|
||||
if (dialect != NULL) {
|
||||
#define DIALECT_GETATTR(v, n) \
|
||||
if (v == NULL) \
|
||||
v = PyObject_GetAttrString(dialect, n)
|
||||
if (v == NULL) { \
|
||||
if ((v = PyObject_GetAttrString(dialect, n)) == NULL) { \
|
||||
if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { \
|
||||
goto err; \
|
||||
} \
|
||||
PyErr_Clear(); \
|
||||
} \
|
||||
}
|
||||
DIALECT_GETATTR(delimiter, "delimiter");
|
||||
DIALECT_GETATTR(doublequote, "doublequote");
|
||||
DIALECT_GETATTR(escapechar, "escapechar");
|
||||
|
@ -404,7 +410,6 @@ dialect_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
|
|||
DIALECT_GETATTR(quoting, "quoting");
|
||||
DIALECT_GETATTR(skipinitialspace, "skipinitialspace");
|
||||
DIALECT_GETATTR(strict, "strict");
|
||||
PyErr_Clear();
|
||||
}
|
||||
|
||||
/* check types and convert to C values */
|
||||
|
|
Loading…
Reference in New Issue