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