summaryrefslogtreecommitdiff
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2013-10-28 18:47:22 +0100
committerVictor Stinner <victor.stinner@gmail.com>2013-10-28 18:47:22 +0100
commitfe2feb2def06b6ee8e2818f1818a2b2743d917b1 (patch)
tree8feabe14845aece2025a3055e26d219d748d7411 /Python
parent03b9c293da396efd6df7fb0d980db0faa8bb4b49 (diff)
downloadcpython-fe2feb2def06b6ee8e2818f1818a2b2743d917b1.tar.gz
Issue #19421: fix a check in warnings.warn() to be able to use it during Python
finalization. sys.argv is set to None during Python finalization: add PyList_Check() to avoid a crash in PyList_Size().
Diffstat (limited to 'Python')
-rw-r--r--Python/_warnings.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/Python/_warnings.c b/Python/_warnings.c
index b8d4bb61de..23b3f5c02d 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -534,7 +534,9 @@ setup_context(Py_ssize_t stack_level, PyObject **filename, int *lineno,
goto handle_error;
if (strcmp(module_str, "__main__") == 0) {
PyObject *argv = PySys_GetObject("argv");
- if (argv != NULL && PyList_Size(argv) > 0) {
+ /* PyList_Check() is needed because sys.argv is set to None during
+ Python finalization */
+ if (argv != NULL && PyList_Check(argv) && PyList_Size(argv) > 0) {
int is_true;
*filename = PyList_GetItem(argv, 0);
Py_INCREF(*filename);