From 1a9d687a496ff81db0f6bde1437b0a2dcdd5dba7 Mon Sep 17 00:00:00 2001 From: Yury Selivanov Date: Tue, 8 Nov 2016 16:54:18 -0500 Subject: [PATCH] Issue #26182: Fix ia refleak in code that raises DeprecationWarning. --- Misc/NEWS | 2 ++ Python/ast.c | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index 7a4fa3a35ab..361e6082ca8 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -18,6 +18,8 @@ Core and Builtins should result in PendingDeprecationWarning in 3.5 and in DeprecationWarning in 3.6. +- Issue #26182: Fix ia refleak in code that raises DeprecationWarning. + Library ------- diff --git a/Python/ast.c b/Python/ast.c index fcd1563a69a..bfae6ed7d4a 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -944,17 +944,19 @@ forbidden_name(struct compiling *c, identifier name, const node *n, PyObject *message = PyUnicode_FromString( "'async' and 'await' will become reserved keywords" " in Python 3.7"); + int ret; if (message == NULL) { return 1; } - if (PyErr_WarnExplicitObject( + ret = PyErr_WarnExplicitObject( PyExc_DeprecationWarning, message, c->c_filename, LINENO(n), NULL, - NULL) < 0) - { + NULL); + Py_DECREF(message); + if (ret < 0) { return 1; } }