From aca0b2a459aaa090efbecd20f2f1b563eb32fd3a Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Mon, 20 Jan 2020 11:29:14 +0800 Subject: [PATCH] Fixes XMLParser leak when open multiple times --- core/io/xml_parser.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/io/xml_parser.cpp b/core/io/xml_parser.cpp index 53e7da91a78..bd450dd84ff 100644 --- a/core/io/xml_parser.cpp +++ b/core/io/xml_parser.cpp @@ -471,6 +471,10 @@ Error XMLParser::open_buffer(const Vector &p_buffer) { ERR_FAIL_COND_V(p_buffer.size() == 0, ERR_INVALID_DATA); + if (data) { + memdelete_arr(data); + } + length = p_buffer.size(); data = memnew_arr(char, length + 1); copymem(data, p_buffer.ptr(), length); @@ -489,6 +493,10 @@ Error XMLParser::open(const String &p_path) { length = file->get_len(); ERR_FAIL_COND_V(length < 1, ERR_FILE_CORRUPT); + if (data) { + memdelete_arr(data); + } + data = memnew_arr(char, length + 1); file->get_buffer((uint8_t *)data, length); data[length] = 0;