fix refleak
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index c5fd365..d6555d6 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -376,6 +376,7 @@
self.emit(format % error, 1, reflow=False)
if add_label:
self.emit("failed:", 1)
+ self.emit("Py_XDECREF(tmp);", 1)
self.emit("return 1;", 1)
self.emit("}", 0)
self.emit("", 0)
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index 4d26ec8..2c09f96 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -3516,6 +3516,7 @@
PyErr_Format(PyExc_TypeError, "expected some sort of mod, but got %R", obj);
failed:
+ Py_XDECREF(tmp);
return 1;
}
@@ -4711,6 +4712,7 @@
PyErr_Format(PyExc_TypeError, "expected some sort of stmt, but got %R", obj);
failed:
+ Py_XDECREF(tmp);
return 1;
}
@@ -5826,6 +5828,7 @@
PyErr_Format(PyExc_TypeError, "expected some sort of expr, but got %R", obj);
failed:
+ Py_XDECREF(tmp);
return 1;
}
@@ -6006,6 +6009,7 @@
PyErr_Format(PyExc_TypeError, "expected some sort of slice, but got %R", obj);
failed:
+ Py_XDECREF(tmp);
return 1;
}
@@ -6438,6 +6442,7 @@
PyErr_Format(PyExc_TypeError, "expected some sort of excepthandler, but got %R", obj);
failed:
+ Py_XDECREF(tmp);
return 1;
}