mirror of
https://github.com/python/cpython.git
synced 2025-07-16 07:45:20 +00:00
merge 3.3 (#24096)
This commit is contained in:
commit
8c59816b70
3 changed files with 42 additions and 10 deletions
|
@ -101,7 +101,7 @@ get_default_action(void)
|
|||
}
|
||||
|
||||
|
||||
/* The item is a borrowed reference. */
|
||||
/* The item is a new reference. */
|
||||
static PyObject*
|
||||
get_filter(PyObject *category, PyObject *text, Py_ssize_t lineno,
|
||||
PyObject *module, PyObject **item)
|
||||
|
@ -132,14 +132,15 @@ get_filter(PyObject *category, PyObject *text, Py_ssize_t lineno,
|
|||
Py_ssize_t ln;
|
||||
int is_subclass, good_msg, good_mod;
|
||||
|
||||
tmp_item = *item = PyList_GET_ITEM(_filters, i);
|
||||
if (PyTuple_Size(tmp_item) != 5) {
|
||||
tmp_item = PyList_GET_ITEM(_filters, i);
|
||||
if (!PyTuple_Check(tmp_item) || PyTuple_GET_SIZE(tmp_item) != 5) {
|
||||
PyErr_Format(PyExc_ValueError,
|
||||
MODULE_NAME ".filters item %zd isn't a 5-tuple", i);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Python code: action, msg, cat, mod, ln = item */
|
||||
Py_INCREF(tmp_item);
|
||||
action = PyTuple_GET_ITEM(tmp_item, 0);
|
||||
msg = PyTuple_GET_ITEM(tmp_item, 1);
|
||||
cat = PyTuple_GET_ITEM(tmp_item, 2);
|
||||
|
@ -147,28 +148,43 @@ get_filter(PyObject *category, PyObject *text, Py_ssize_t lineno,
|
|||
ln_obj = PyTuple_GET_ITEM(tmp_item, 4);
|
||||
|
||||
good_msg = check_matched(msg, text);
|
||||
if (good_msg == -1)
|
||||
if (good_msg == -1) {
|
||||
Py_DECREF(tmp_item);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
good_mod = check_matched(mod, module);
|
||||
if (good_mod == -1)
|
||||
if (good_mod == -1) {
|
||||
Py_DECREF(tmp_item);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
is_subclass = PyObject_IsSubclass(category, cat);
|
||||
if (is_subclass == -1)
|
||||
if (is_subclass == -1) {
|
||||
Py_DECREF(tmp_item);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ln = PyLong_AsSsize_t(ln_obj);
|
||||
if (ln == -1 && PyErr_Occurred())
|
||||
if (ln == -1 && PyErr_Occurred()) {
|
||||
Py_DECREF(tmp_item);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (good_msg && is_subclass && good_mod && (ln == 0 || lineno == ln))
|
||||
if (good_msg && is_subclass && good_mod && (ln == 0 || lineno == ln)) {
|
||||
*item = tmp_item;
|
||||
return action;
|
||||
}
|
||||
|
||||
Py_DECREF(tmp_item);
|
||||
}
|
||||
|
||||
action = get_default_action();
|
||||
if (action != NULL)
|
||||
if (action != NULL) {
|
||||
Py_INCREF(Py_None);
|
||||
*item = Py_None;
|
||||
return action;
|
||||
}
|
||||
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
MODULE_NAME ".defaultaction not found");
|
||||
|
@ -349,7 +365,7 @@ warn_explicit(PyObject *category, PyObject *message,
|
|||
PyObject *module, PyObject *registry, PyObject *sourceline)
|
||||
{
|
||||
PyObject *key = NULL, *text = NULL, *result = NULL, *lineno_obj = NULL;
|
||||
PyObject *item = Py_None;
|
||||
PyObject *item = NULL;
|
||||
PyObject *action;
|
||||
int rc;
|
||||
|
||||
|
@ -488,6 +504,7 @@ warn_explicit(PyObject *category, PyObject *message,
|
|||
Py_INCREF(result);
|
||||
|
||||
cleanup:
|
||||
Py_XDECREF(item);
|
||||
Py_XDECREF(key);
|
||||
Py_XDECREF(text);
|
||||
Py_XDECREF(lineno_obj);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue