[4suite-checkins] [XML1_0-maint] In 4Suite/Ft/Xml/src/domlette,
files nss.c
Jeremy Kloth
jkloth at 4suite.org
Tue Nov 7 14:40:21 MST 2006
Branch: XML1_0-maint
Modified Files:
nss.c
Log Message:
Fixed error with default namespaces in GetAllNs().
ViewCVS diff:
http://cvs.4suite.org/viewcvs/4Suite/Ft/Xml/src/domlette/nss.c.diff?r1=1.8&r2=1.8.2.1
ViewCVS view:
http://cvs.4suite.org/viewcvs/4Suite/Ft/Xml/src/domlette/nss.c?rev=1.8.2.1&content-type=text/vnd.viewcvs-markup
Index: nss.c
===================================================================
RCS file: /var/local/cvsroot/4Suite/Ft/Xml/src/domlette/nss.c,v
retrieving revision 1.8
retrieving revision 1.8.2.1
diff -U2 -r1.8 -r1.8.2.1
--- nss.c 13 Aug 2006 22:07:04 -0000 1.8
+++ nss.c 7 Nov 2006 21:40:19 -0000 1.8.2.1
@@ -33,6 +33,5 @@
/* add the declaration if prefix is not already defined */
- if (PyElement_NAMESPACE_URI(node) != Py_None &&
- PyDict_GetItem(nss, prefix) == NULL) {
+ if (PyDict_GetItem(nss, prefix) == NULL) {
if (PyDict_SetItem(nss, prefix, PyElement_NAMESPACE_URI(node)) < 0) {
Py_DECREF(prefix);
@@ -41,5 +40,5 @@
}
Py_DECREF(prefix);
-
+
/* now process this element's attributes */
i = 0;
@@ -54,5 +53,5 @@
if (prefix == NULL) return -1;
break;
- case 1:
+ case 1:
/* namespace attribute */
namespaceURI = PyAttr_NODE_VALUE(attr);
@@ -88,5 +87,5 @@
Py_DECREF(prefix);
}
- }
+ }
if (Node_GET_PARENT(node) != (PyNodeObject *) Py_None) {
@@ -118,5 +117,5 @@
}
Py_DECREF(prefix);
-
+
/* now process this element's attributes */
i = 0;
@@ -133,5 +132,5 @@
if (prefix == NULL) return NULL;
break;
- case 1:
+ case 1:
/* namespace attribute */
namespaceURI = PyAttr_NODE_VALUE(attr);
@@ -218,7 +217,7 @@
return -1;
}
-
+
/* add the declaration if prefix is not already defined */
- if (namespaceURI != Py_None && PyDict_GetItem(nss, prefix) == NULL) {
+ if (PyDict_GetItem(nss, prefix) == NULL) {
if (PyDict_SetItem(nss, prefix, namespaceURI) == -1) {
Py_DECREF(namespaceURI);
@@ -229,5 +228,5 @@
Py_DECREF(namespaceURI);
Py_DECREF(prefix);
-
+
/* now process this element's attributes */
obj = PyObject_GetAttrString(node, "attributes");
@@ -272,5 +271,5 @@
/* normal attribute */
break;
- case 1:
+ case 1:
/* namespace attribute */
Py_DECREF(namespaceURI);
@@ -320,13 +319,13 @@
}
}
-
+
Py_DECREF(namespaceURI);
Py_DECREF(prefix);
}
-
+
Py_DECREF(tuple);
}
-
- if (nodeType == ATTRIBUTE_NODE)
+
+ if (nodeType == ATTRIBUTE_NODE)
obj = PyObject_GetAttrString(node, "ownerElement");
else
@@ -386,5 +385,5 @@
Py_DECREF(namespaceURI);
Py_DECREF(prefix);
-
+
/* now process this element's attributes */
obj = PyObject_GetAttrString(node, "attributes");
@@ -424,10 +423,10 @@
/* get the prefix/namespaceURI pair to add */
- switch (PyObject_RichCompareBool(namespaceURI, g_xmlnsNamespace,
+ switch (PyObject_RichCompareBool(namespaceURI, g_xmlnsNamespace,
Py_EQ)) {
case 0:
/* normal attribute */
break;
- case 1:
+ case 1:
/* namespace attribute */
Py_DECREF(namespaceURI);
@@ -477,5 +476,5 @@
}
}
-
+
Py_DECREF(namespaceURI);
Py_DECREF(prefix);
@@ -503,5 +502,5 @@
}
Py_DECREF(tuple);
-
+
return nss;
}
@@ -529,5 +528,5 @@
}
Py_DECREF(prefix);
-
+
if (get_all_ns_domlette(node, nss) == -1) {
Py_DECREF(nss);
@@ -535,4 +534,12 @@
}
+ /* don't expose the implied default namespace */
+ if (PyDict_GetItem(nss, Py_None) == Py_None) {
+ if (PyDict_DelItem(nss, Py_None) == -1) {
+ Py_DECREF(nss);
+ return NULL;
+ }
+ }
+
return nss;
}
@@ -568,6 +575,6 @@
}
Py_DECREF(prefix);
-
- if (PyNode_Check(node))
+
+ if (PyNode_Check(node))
result = get_all_ns_domlette((PyNodeObject *) node, nss);
else
@@ -579,4 +586,12 @@
}
+ /* don't expose the implied default namespace */
+ if (PyDict_GetItem(nss, Py_None) == Py_None) {
+ if (PyDict_DelItem(nss, Py_None) == -1) {
+ Py_DECREF(nss);
+ return NULL;
+ }
+ }
+
return nss;
}
@@ -599,5 +614,5 @@
if (nss == NULL) return NULL;
- if (PyNode_Check(node))
+ if (PyNode_Check(node))
result = seek_nss_domlette((PyNodeObject *)node, nss);
else
More information about the 4suite-checkins
mailing list