diff --git a/file.c b/file.c index b5fba301a..8deb2fe97 100644 --- a/file.c +++ b/file.c @@ -72,6 +72,7 @@ static void zip_read(struct zip_file *file, GError **error, const char *filename size = read * 3 / 2; mem = realloc(mem, size); } + mem[read] = 0; parse_xml_buffer(filename, mem, read, &dive_table, error); free(mem); } diff --git a/parse-xml.c b/parse-xml.c index b24806bba..2ecd063b2 100644 --- a/parse-xml.c +++ b/parse-xml.c @@ -1562,6 +1562,9 @@ void parse_xml_buffer(const char *url, const char *buffer, int size, target_table = table; doc = xmlReadMemory(res, strlen(res), url, NULL, 0); + if (res != buffer) + free((char *)res); + if (!doc) { fprintf(stderr, _("Failed to parse '%s'.\n"), url); parser_error(error, _("Failed to parse '%s'"), url);