From 0d934f8ad11004bbc4e0230a051f1c14e4cd63ea Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Thu, 15 Aug 2013 18:52:17 -0400 Subject: [PATCH] Squash a couple memory leaks. --- mwparserfromhell/parser/tokenizer.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/mwparserfromhell/parser/tokenizer.c b/mwparserfromhell/parser/tokenizer.c index 6600203..67a4ae6 100644 --- a/mwparserfromhell/parser/tokenizer.c +++ b/mwparserfromhell/parser/tokenizer.c @@ -1646,11 +1646,13 @@ static int Tokenizer_handle_invalid_tag_start(Tokenizer* self) } if (!IS_SINGLE_ONLY(name)) FAIL_ROUTE(0); + Py_DECREF(name); break; } Textbuffer_write(&buf, this); pos++; } + Textbuffer_dealloc(buf); if (!BAD_ROUTE) { tag = Tokenizer_really_parse_tag(self); if (!tag) @@ -1664,7 +1666,12 @@ static int Tokenizer_handle_invalid_tag_start(Tokenizer* self) // Set invalid=True flag of TagOpenOpen if (PyObject_SetAttrString(PyList_GET_ITEM(tag, 0), "invalid", Py_True)) return -1; - return Tokenizer_emit_all(self, tag); + if (Tokenizer_emit_all(self, tag)) { + Py_DECREF(tag); + return -1; + } + Py_DECREF(tag); + return 0; } /* @@ -1685,7 +1692,10 @@ static int Tokenizer_parse_tag(Tokenizer* self) if (!tag) { return -1; } - Tokenizer_emit_all(self, tag); + if (Tokenizer_emit_all(self, tag)) { + Py_DECREF(tag); + return -1; + } Py_DECREF(tag); return 0; }