1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-07-14 20:01:04 +03:00

Fix leak on SAX1, xmllint --sax1 option and debug

* SAX2.c: don't leak in xmlCheckDefaultedAttributes for standalone
  checking
* xmllint.c: fix xmllint --sax1 to actually use XML_PARSE_SAX1
* debugXML.c: don't raise an error if markup wasn't allocated from
  dictionary if document was parsed with option disabling it
This commit is contained in:
Daniel Veillard
2009-07-29 11:34:50 +02:00
parent 669e88c065
commit 023d0babc4
3 changed files with 8 additions and 4 deletions

1
SAX2.c
View File

@ -1446,6 +1446,7 @@ process_external_subset:
(const char *)fulln, (const char *)fulln,
(const char *)attr->elem); (const char *)attr->elem);
} }
xmlFree(fulln);
} }
attr = attr->nexth; attr = attr->nexth;
} }

View File

@ -259,7 +259,9 @@ xmlCtxtCheckName(xmlDebugCtxtPtr ctxt, const xmlChar * name)
"Name is not an NCName '%s'", (const char *) name); "Name is not an NCName '%s'", (const char *) name);
} }
if ((ctxt->dict != NULL) && if ((ctxt->dict != NULL) &&
(!xmlDictOwns(ctxt->dict, name))) { (!xmlDictOwns(ctxt->dict, name)) &&
((ctxt->doc == NULL) ||
((ctxt->doc->parseFlags & (XML_PARSE_SAX1 | XML_PARSE_NODICT)) == 0))) {
xmlDebugErr3(ctxt, XML_CHECK_OUTSIDE_DICT, xmlDebugErr3(ctxt, XML_CHECK_OUTSIDE_DICT,
"Name is not from the document dictionnary '%s'", "Name is not from the document dictionnary '%s'",
(const char *) name); (const char *) name);

View File

@ -3221,16 +3221,17 @@ main(int argc, char **argv) {
#ifdef LIBXML_SAX1_ENABLED #ifdef LIBXML_SAX1_ENABLED
else if ((!strcmp(argv[i], "-sax1")) || else if ((!strcmp(argv[i], "-sax1")) ||
(!strcmp(argv[i], "--sax1"))) { (!strcmp(argv[i], "--sax1"))) {
sax1++; sax1++;
options |= XML_PARSE_SAX1;
} }
#endif /* LIBXML_SAX1_ENABLED */ #endif /* LIBXML_SAX1_ENABLED */
else if ((!strcmp(argv[i], "-sax")) || else if ((!strcmp(argv[i], "-sax")) ||
(!strcmp(argv[i], "--sax"))) { (!strcmp(argv[i], "--sax"))) {
sax++; sax++;
} }
else if ((!strcmp(argv[i], "-chkregister")) || else if ((!strcmp(argv[i], "-chkregister")) ||
(!strcmp(argv[i], "--chkregister"))) { (!strcmp(argv[i], "--chkregister"))) {
chkregister++; chkregister++;
#ifdef LIBXML_SCHEMAS_ENABLED #ifdef LIBXML_SCHEMAS_ENABLED
} else if ((!strcmp(argv[i], "-relaxng")) || } else if ((!strcmp(argv[i], "-relaxng")) ||
(!strcmp(argv[i], "--relaxng"))) { (!strcmp(argv[i], "--relaxng"))) {