summaryrefslogtreecommitdiff
path: root/xmlwriter.c
diff options
context:
space:
mode:
authorMike Hommey <glandium@debian.org>2005-03-27 13:13:58 +0000
committerMike Hommey <glandium@debian.org>2005-03-27 13:13:58 +0000
commit50e5b428562964b1eb2f876370058b34b47c5e90 (patch)
treec66bcae6dbbce07128ee881353ff60090524462c /xmlwriter.c
parenta7457388701e6ccba9091ba3ec09505dc903b758 (diff)
downloadlibxml2-50e5b428562964b1eb2f876370058b34b47c5e90.tar.gz
Load /tmp/tmp.XJZ6qc/libxml2-2.6.18 intoupstream/2.6.18
packages/libxml2/branches/upstream/current.
Diffstat (limited to 'xmlwriter.c')
-rw-r--r--xmlwriter.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/xmlwriter.c b/xmlwriter.c
index 099d3f0..76d7549 100644
--- a/xmlwriter.c
+++ b/xmlwriter.c
@@ -936,6 +936,12 @@ xmlTextWriterStartElement(xmlTextWriterPtr writer, const xmlChar * name)
return -1;
case XML_TEXTWRITER_NONE:
break;
+ case XML_TEXTWRITER_ATTRIBUTE:
+ count = xmlTextWriterEndAttribute(writer);
+ if (count < 0)
+ return -1;
+ sum += count;
+ /* fallthrough */
case XML_TEXTWRITER_NAME:
count = xmlOutputBufferWriteString(writer->out, ">");
if (count < 0)
@@ -1832,12 +1838,26 @@ xmlTextWriterEndAttribute(xmlTextWriterPtr writer)
sum += count;
while (!xmlListEmpty(writer->nsstack)) {
+ xmlChar *namespaceURI = NULL;
+ xmlChar *prefix = NULL;
+
lk = xmlListFront(writer->nsstack);
np = (xmlTextWriterNsStackEntry *) xmlLinkGetData(lk);
+
+ if (np != 0) {
+ namespaceURI = xmlStrdup(np->uri);
+ prefix = xmlStrdup(np->prefix);
+ }
+
+ xmlListPopFront(writer->nsstack);
+
if (np != 0) {
count =
- xmlTextWriterWriteAttribute(writer, np->prefix,
- np->uri);
+ xmlTextWriterWriteAttribute(writer, prefix,
+ namespaceURI);
+ xmlFree(namespaceURI);
+ xmlFree(prefix);
+
if (count < 0) {
xmlListDelete(writer->nsstack);
writer->nsstack = NULL;
@@ -1845,8 +1865,6 @@ xmlTextWriterEndAttribute(xmlTextWriterPtr writer)
}
sum += count;
}
-
- xmlListPopFront(writer->nsstack);
}
break;