mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-30 22:43:14 +03:00
fixed bug #109160 on non-ASCII IDs Daniel
* xpath.c: fixed bug #109160 on non-ASCII IDs Daniel
This commit is contained in:
@ -1,3 +1,7 @@
|
|||||||
|
Wed Mar 26 22:38:39 CET 2003 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
|
* xpath.c: fixed bug #109160 on non-ASCII IDs
|
||||||
|
|
||||||
Wed Mar 26 17:30:37 CET 2003 Daniel Veillard <daniel@veillard.com>
|
Wed Mar 26 17:30:37 CET 2003 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
* parser.c: Norm suggested a nicer error message for xml:space values
|
* parser.c: Norm suggested a nicer error message for xml:space values
|
||||||
|
31
xpath.c
31
xpath.c
@ -5946,23 +5946,26 @@ xmlXPathGetElementsByIds (xmlDocPtr doc, const xmlChar *ids) {
|
|||||||
|
|
||||||
while (IS_BLANK(*cur)) cur++;
|
while (IS_BLANK(*cur)) cur++;
|
||||||
while (*cur != 0) {
|
while (*cur != 0) {
|
||||||
while ((IS_LETTER(*cur)) || (IS_DIGIT(*cur)) ||
|
while ((!IS_BLANK(*cur)) && (*cur != 0))
|
||||||
(*cur == '.') || (*cur == '-') ||
|
cur++;
|
||||||
(*cur == '_') || (*cur == ':') ||
|
|
||||||
(IS_COMBINING(*cur)) ||
|
|
||||||
(IS_EXTENDER(*cur)))
|
|
||||||
cur++;
|
|
||||||
|
|
||||||
if ((!IS_BLANK(*cur)) && (*cur != 0)) break;
|
|
||||||
|
|
||||||
ID = xmlStrndup(ids, cur - ids);
|
ID = xmlStrndup(ids, cur - ids);
|
||||||
attr = xmlGetID(doc, ID);
|
if (ID != NULL) {
|
||||||
if (attr != NULL) {
|
if (xmlValidateNCName(ID, 1) == 0) {
|
||||||
elem = attr->parent;
|
attr = xmlGetID(doc, ID);
|
||||||
xmlXPathNodeSetAdd(ret, elem);
|
if (attr != NULL) {
|
||||||
}
|
if (attr->type == XML_ATTRIBUTE_NODE)
|
||||||
if (ID != NULL)
|
elem = attr->parent;
|
||||||
|
else if (attr->type == XML_ELEMENT_NODE)
|
||||||
|
elem = (xmlNodePtr) attr;
|
||||||
|
else
|
||||||
|
elem = NULL;
|
||||||
|
if (elem != NULL)
|
||||||
|
xmlXPathNodeSetAdd(ret, elem);
|
||||||
|
}
|
||||||
|
}
|
||||||
xmlFree(ID);
|
xmlFree(ID);
|
||||||
|
}
|
||||||
|
|
||||||
while (IS_BLANK(*cur)) cur++;
|
while (IS_BLANK(*cur)) cur++;
|
||||||
ids = cur;
|
ids = cur;
|
||||||
|
Reference in New Issue
Block a user