summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/io/xml_parser.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/core/io/xml_parser.cpp b/core/io/xml_parser.cpp
index 53e7da91a7..bd450dd84f 100644
--- a/core/io/xml_parser.cpp
+++ b/core/io/xml_parser.cpp
@@ -471,6 +471,10 @@ Error XMLParser::open_buffer(const Vector<uint8_t> &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;