pajoye Tue May 8 21:40:25 2007 UTC
Added files:
/php-src/ext/xmlwriter/tests bug41326.phpt
Modified files:
/php-src/ext/xmlwriter php_xmlwriter.c
/php-src/ext/xmlwriter/tests bug41287.phpt
Log:
- #41326, writing empty tags with Xmlwriter::WriteElement[ns]
http://cvs.php.net/viewvc.cgi/php-src/ext/xmlwriter/php_xmlwriter.c?r1=1.46&r2=1.47&diff_format=u
Index: php-src/ext/xmlwriter/php_xmlwriter.c
diff -u php-src/ext/xmlwriter/php_xmlwriter.c:1.46
php-src/ext/xmlwriter/php_xmlwriter.c:1.47
--- php-src/ext/xmlwriter/php_xmlwriter.c:1.46 Fri May 4 20:17:40 2007
+++ php-src/ext/xmlwriter/php_xmlwriter.c Tue May 8 21:40:24 2007
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_xmlwriter.c,v 1.46 2007/05/04 20:17:40 rrichards Exp $ */
+/* $Id: php_xmlwriter.c,v 1.47 2007/05/08 21:40:24 pajoye Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -769,13 +769,13 @@
zval *pind;
xmlwriter_object *intern;
xmlTextWriterPtr ptr;
- char *name, *content;
+ char *name, *content = NULL;
int name_len, content_len, retval;
#ifdef ZEND_ENGINE_2
zval *this = getThis();
if (this) {
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&s&",
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&|s&",
&name, &name_len, UG(utf8_conv), &content,
&content_len, UG(utf8_conv)) == FAILURE) {
return;
}
@@ -783,7 +783,7 @@
} else
#endif
{
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs&s&",
&pind,
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs&|s&",
&pind,
&name, &name_len, UG(utf8_conv), &content,
&content_len, UG(utf8_conv)) == FAILURE) {
return;
}
@@ -795,7 +795,18 @@
ptr = intern->ptr;
if (ptr) {
- retval = xmlTextWriterWriteElement(ptr, (xmlChar *)name,
(xmlChar *)content);
+ if (!content || content_len < 1) {
+ retval = xmlTextWriterStartElement(ptr, (xmlChar *)name);
+ if (retval == -1) {
+ RETURN_FALSE;
+ }
+ retval = xmlTextWriterEndElement(ptr);
+ if (retval == -1) {
+ RETURN_FALSE;
+ }
+ } else {
+ retval = xmlTextWriterWriteElement(ptr, (xmlChar *)name, (xmlChar
*)content);
+ }
if (retval != -1) {
RETURN_TRUE;
}
@@ -839,7 +850,18 @@
ptr = intern->ptr;
if (ptr) {
- retval = xmlTextWriterWriteElementNS(ptr, (xmlChar *)prefix,
(xmlChar *)name, (xmlChar *)uri, (xmlChar *)content);
+ if (!content || content_len < 1) {
+ retval = xmlTextWriterStartElementNS(ptr,(xmlChar *)prefix,
(xmlChar *)name, (xmlChar *)uri);
+ if (retval == -1) {
+ RETURN_FALSE;
+ }
+ retval = xmlTextWriterEndElement(ptr);
+ if (retval == -1) {
+ RETURN_FALSE;
+ }
+ } else {
+ retval = xmlTextWriterWriteElementNS(ptr, (xmlChar *)prefix,
(xmlChar *)name, (xmlChar *)uri, (xmlChar *)content);
+ }
if (retval != -1) {
RETURN_TRUE;
}
http://cvs.php.net/viewvc.cgi/php-src/ext/xmlwriter/tests/bug41287.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/ext/xmlwriter/tests/bug41287.phpt
diff -u php-src/ext/xmlwriter/tests/bug41287.phpt:1.2
php-src/ext/xmlwriter/tests/bug41287.phpt:1.3
--- php-src/ext/xmlwriter/tests/bug41287.phpt:1.2 Fri May 4 20:17:40 2007
+++ php-src/ext/xmlwriter/tests/bug41287.phpt Tue May 8 21:40:25 2007
@@ -30,14 +30,14 @@
--EXPECTF--
<?xml version="1.0"?>
<test:test xmlns:test="urn:x-test:">
- <test:foo></test:foo>
- <bar xmlns="urn:x-test:"></bar>
- <bar xmlns=""></bar>
+ <test:foo/>
+ <bar xmlns="urn:x-test:"/>
+ <bar xmlns=""/>
</test:test>
<?xml version="1.0"?>
<test:test xmlns:test="urn:x-test:">
- <test:foo></test:foo>
- <bar xmlns="urn:x-test:"></bar>
- <bar xmlns=""></bar>
+ <test:foo/>
+ <bar xmlns="urn:x-test:"/>
+ <bar xmlns=""/>
</test:test>
http://cvs.php.net/viewvc.cgi/php-src/ext/xmlwriter/tests/bug41326.phpt?view=markup&rev=1.1
Index: php-src/ext/xmlwriter/tests/bug41326.phpt
+++ php-src/ext/xmlwriter/tests/bug41326.phpt
--TEST--
Bug #41287 (Writing empty tags with Xmlwriter::WriteElement[ns])
--FILE--
<?php
$xml = new XmlWriter();
$xml->openMemory();
$xml->setIndent(true);
$xml->startDocument();
$xml->startElement('test');
$xml->writeElement('foo', null);
$xml->writeElement('foo2', null);
$xml->startElement('bar');
$xml->endElement('bar');
$xml->endElement();
print $xml->flush(true);
print "\n";
$xw = new XMLWriter();
$xw->openMemory();
$xw->setIndent(true);
$xw->startDocument();
$xw->startElementNS('test', 'test', 'urn:x-test:');
$xw->writeElementNS('test', 'foo', null, '');
$xw->writeElementNS(null, 'bar', 'urn:x-test:', '');
$xw->writeElementNS(null, 'bar', '', '');
$xw->endElement();
$xw->endDocument();
print $xw->flush(true);
?>
--EXPECTF--
<?xml version="1.0"?>
<test>
<foo/>
<foo2/>
<bar/>
</test>
<?xml version="1.0"?>
<test:test xmlns:test="urn:x-test:">
<test:foo/>
<bar xmlns="urn:x-test:"/>
<bar xmlns=""/>
</test:test>
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php