1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-07-29 11:41:22 +03:00

applied fix from Mathias Hasselmann about a bug in URI parsing. fix bug

* uri.c: applied fix from Mathias Hasselmann about a bug in URI
  parsing.
* xpath.c: fix bug #61291 the default XML namespace node is
  missing from the namespace axis.
* tree.c: refuse to create namespaces nodes with prefix "xml"
Daniel
This commit is contained in:
Daniel Veillard
2001-10-05 09:18:14 +00:00
parent 651f947163
commit 20ee8c0310
4 changed files with 33 additions and 5 deletions

20
xpath.c
View File

@ -62,6 +62,14 @@ void xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
double xmlXPathStringEvalNumber(const xmlChar *str);
double xmlXPathDivideBy(double f, double fzero);
static xmlNs xmlXPathXMLNamespaceStruct = {
NULL,
XML_NAMESPACE_DECL,
XML_XML_NAMESPACE,
BAD_CAST "xml"
};
static xmlNsPtr xmlXPathXMLNamespace = &xmlXPathXMLNamespaceStruct;
/************************************************************************
* *
* Floating point stuff *
@ -79,6 +87,7 @@ double xmlXPathDivideBy(double f, double fzero);
double xmlXPathNAN = 0;
double xmlXPathPINF = 1;
double xmlXPathNINF = -1;
static int xmlXPathInitialized = 0;
/**
* xmlXPathInit:
@ -87,15 +96,13 @@ double xmlXPathNINF = -1;
*/
void
xmlXPathInit(void) {
static int initialized = 0;
if (initialized) return;
if (xmlXPathInitialized) return;
xmlXPathPINF = trio_pinf();
xmlXPathNINF = trio_ninf();
xmlXPathNAN = trio_nan();
initialized = 1;
xmlXPathInitialized = 1;
}
/**
@ -4970,6 +4977,8 @@ xmlXPathNextPrecedingInternal(xmlXPathParserContextPtr ctxt,
* the order of nodes on this axis is implementation-defined; the axis will
* be empty unless the context node is an element
*
* We keep the XML namespace node at the end of the list.
*
* Returns the next element following that axis
*/
xmlNodePtr
@ -4977,6 +4986,8 @@ xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
xmlNodePtr ret;
if (ctxt->context->node->type != XML_ELEMENT_NODE) return(NULL);
if (cur == (xmlNodePtr) xmlXPathXMLNamespace)
return(NULL);
if ((cur == NULL) || (ctxt->context->tmpNsList == NULL)) {
if (ctxt->context->tmpNsList != NULL)
xmlFree(ctxt->context->tmpNsList);
@ -4989,6 +5000,7 @@ xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
if (ret == NULL) {
xmlFree(ctxt->context->tmpNsList);
ctxt->context->tmpNsList = NULL;
return((xmlNodePtr) xmlXPathXMLNamespace);
}
return(ret);
}