diff --git a/ChangeLog b/ChangeLog index 1b4d71da..94b7ea69 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Mon Apr 2 17:13:51 CEST 2001 Daniel Veillard + + * xpath.c: fixed a memleak when comparing nodesets + * HTMLtree.c: don't invent the HTML doctype if not available (XSLT) + * tree.c: added a TODO + Tue Mar 27 14:32:06 CEST 2001 Daniel Veillard * configure.in Makefile.am config.h.in xmlversion.h.in: detect if diff --git a/HTMLtree.c b/HTMLtree.c index 12f4e38e..66ccdca3 100644 --- a/HTMLtree.c +++ b/HTMLtree.c @@ -961,12 +961,15 @@ htmlDocContentDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr cur, const char *enco */ type = cur->type; cur->type = XML_HTML_DOCUMENT_NODE; - if (cur->intSubset != NULL) + if (cur->intSubset != NULL) { htmlDtdDumpOutput(buf, cur, NULL); - else { +#if 0 + /* Disabled for XSLT output */ + } else { /* Default to HTML-4.0 transitionnal @@@@ */ xmlOutputBufferWriteString(buf, "\n"); +#endif } if (cur->children != NULL) { htmlNodeListDumpOutput(buf, cur, cur->children, encoding); @@ -975,7 +978,6 @@ htmlDocContentDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr cur, const char *enco cur->type = (xmlElementType) type; } - /************************************************************************ * * * Saving functions front-ends * @@ -1130,6 +1132,8 @@ htmlSaveFileEnc(const char *filename, xmlDocPtr cur, const char *encoding) { return(-1); htmlSetMetaEncoding(cur, (const xmlChar *) encoding); } + } else { + htmlSetMetaEncoding(cur, (const xmlChar *) "UTF-8"); } /* diff --git a/tree.c b/tree.c index 17352585..6d026b9a 100644 --- a/tree.c +++ b/tree.c @@ -645,6 +645,10 @@ xmlStringGetNodeList(xmlDocPtr doc, const xmlChar *value) { q = cur; while (*cur != 0) { + /* TODO: attributes can inherits & ... + if ((*cur == '&') && (cur[1] == '#')) { + int val = + } else */ if (*cur == '&') { /* * Save the current text. diff --git a/xpath.c b/xpath.c index 9d49cd13..98f37c0e 100644 --- a/xpath.c +++ b/xpath.c @@ -2541,22 +2541,35 @@ xmlXPathCompareNodeSets(int inf, int strict, xmlNodeSetPtr ns2; if ((arg1 == NULL) || - ((arg1->type != XPATH_NODESET) && (arg1->type != XPATH_XSLT_TREE))) + ((arg1->type != XPATH_NODESET) && (arg1->type != XPATH_XSLT_TREE))) { + xmlXPathFreeObject(arg2); return(0); + } if ((arg2 == NULL) || - ((arg2->type != XPATH_NODESET) && (arg2->type != XPATH_XSLT_TREE))) + ((arg2->type != XPATH_NODESET) && (arg2->type != XPATH_XSLT_TREE))) { + xmlXPathFreeObject(arg1); + xmlXPathFreeObject(arg2); return(0); + } ns1 = arg1->nodesetval; ns2 = arg2->nodesetval; - if (ns1->nodeNr <= 0) + if (ns1->nodeNr <= 0) { + xmlXPathFreeObject(arg1); + xmlXPathFreeObject(arg2); return(0); - if (ns2->nodeNr <= 0) + } + if (ns2->nodeNr <= 0) { + xmlXPathFreeObject(arg1); + xmlXPathFreeObject(arg2); return(0); + } values2 = (double *) xmlMalloc(ns2->nodeNr * sizeof(double)); if (values2 == NULL) { + xmlXPathFreeObject(arg1); + xmlXPathFreeObject(arg2); return(0); } for (i = 0;i < ns1->nodeNr;i++) { @@ -2595,6 +2608,8 @@ xmlXPathCompareNodeSets(int inf, int strict, init = 1; } xmlFree(values2); + xmlXPathFreeObject(arg1); + xmlXPathFreeObject(arg2); return(ret); return(0); }