diff options
author | Daniel Veillard <veillard@src.gnome.org> | 2003-02-05 10:45:26 +0000 |
---|---|---|
committer | Daniel Veillard <veillard@src.gnome.org> | 2003-02-05 10:45:26 +0000 |
commit | de590ca1805a4691fe217242dd783b9a6b0d19eb (patch) | |
tree | af4a360ee8ff3b479b699b1844789e06755d586e /SAX.c | |
parent | 930dfb6324a11cf9eb6e00db6a374f9f8053ff02 (diff) | |
download | android_external_libxml2-de590ca1805a4691fe217242dd783b9a6b0d19eb.tar.gz android_external_libxml2-de590ca1805a4691fe217242dd783b9a6b0d19eb.tar.bz2 android_external_libxml2-de590ca1805a4691fe217242dd783b9a6b0d19eb.zip |
added the redefinition of namespaced attribute check that was missing as
* SAX.c: added the redefinition of namespaced attribute
check that was missing as Fabrice Desré pointed out.
Daniel
Diffstat (limited to 'SAX.c')
-rw-r--r-- | SAX.c | 25 |
1 files changed, 23 insertions, 2 deletions
@@ -940,9 +940,29 @@ my_attribute(void *ctx, const xmlChar *fullname, const xmlChar *value, return; } - if (ns != NULL) + if (ns != NULL) { + xmlAttrPtr prop; namespace = xmlSearchNs(ctxt->myDoc, ctxt->node, ns); - else { + + prop = ctxt->node->properties; + while (prop != NULL) { + if (prop->ns != NULL) { + if ((xmlStrEqual(name, prop->name)) && + ((namespace == prop->ns) || + (xmlStrEqual(namespace->href, prop->ns->href)))) { + ctxt->errNo = XML_ERR_ATTRIBUTE_REDEFINED; + if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) + ctxt->sax->error(ctxt->userData, + "Attribute %s in %s redefined\n", + name, namespace->href); + ctxt->wellFormed = 0; + if (ctxt->recovery == 0) ctxt->disableSAX = 1; + goto error; + } + } + prop = prop->next; + } + } else { namespace = NULL; } @@ -1022,6 +1042,7 @@ my_attribute(void *ctx, const xmlChar *fullname, const xmlChar *value, xmlAddRef(&ctxt->vctxt, ctxt->myDoc, value, ret); } +error: if (nval != NULL) xmlFree(nval); if (ns != NULL) |