Explorar el Código

Fixes XMLParser leak when open multiple times

Haoyu Qiu hace 5 años
padre
commit
aca0b2a459
Se han modificado 1 ficheros con 8 adiciones y 0 borrados
  1. 8 0
      core/io/xml_parser.cpp

+ 8 - 0
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;