aboutsummaryrefslogtreecommitdiffstats
path: root/SAX.c
diff options
context:
space:
mode:
authorDaniel Veillard <veillard@src.gnome.org>2003-02-05 10:45:26 +0000
committerDaniel Veillard <veillard@src.gnome.org>2003-02-05 10:45:26 +0000
commitde590ca1805a4691fe217242dd783b9a6b0d19eb (patch)
treeaf4a360ee8ff3b479b699b1844789e06755d586e /SAX.c
parent930dfb6324a11cf9eb6e00db6a374f9f8053ff02 (diff)
downloadandroid_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.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/SAX.c b/SAX.c
index 84d7f6a2..b6375075 100644
--- a/SAX.c
+++ b/SAX.c
@@ -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)