cvs: php-src(PHP_5_2) /ext/dom php_dom.c /ext/dom/tests bug35342.phpt bug42082.phpt

From: Date: Mon, 06 Aug 2007 16:22:24 +0000
Subject: cvs: php-src(PHP_5_2) /ext/dom php_dom.c /ext/dom/tests bug35342.phpt bug42082.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-45739@lists.php.net to get a copy of this message
rrichards Mon Aug 6 16:22:24 2007 UTC Added files: (Branch: PHP_5_2) /php-src/ext/dom/tests bug42082.phpt Modified files: /php-src/ext/dom php_dom.c /php-src/ext/dom/tests bug35342.phpt Log: MFH: fix bug #42082 (NodeList length zero should be empty). (Hannes) add and update tests http://cvs.php.net/viewvc.cgi/php-src/ext/dom/php_dom.c?r1=1.73.2.12.2.10&r2=1.73.2.12.2.11&diff_format=u Index: php-src/ext/dom/php_dom.c diff -u php-src/ext/dom/php_dom.c:1.73.2.12.2.10 php-src/ext/dom/php_dom.c:1.73.2.12.2.11 --- php-src/ext/dom/php_dom.c:1.73.2.12.2.10 Tue Apr 3 11:57:04 2007 +++ php-src/ext/dom/php_dom.c Mon Aug 6 16:22:24 2007 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_dom.c,v 1.73.2.12.2.10 2007/04/03 11:57:04 rrichards Exp $ */ +/* $Id: php_dom.c,v 1.73.2.12.2.11 2007/08/06 16:22:24 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -411,7 +411,20 @@ ret = zend_hash_find((HashTable *)obj->prop_handler, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, (void **) &hnd); } if (ret == SUCCESS) { - retval = 1; + zval *tmp; + + if (check_empty == 2) { + retval = 1; + } else if (hnd->read_func(obj, &tmp TSRMLS_CC) == SUCCESS) { + tmp->refcount = 1; + tmp->is_ref = 0; + if (check_empty == 1) { + retval = zend_is_true(tmp); + } else if (check_empty == 0) { + retval = (Z_TYPE_P(tmp) != IS_NULL); + } + zval_ptr_dtor(&tmp); + } } else { std_hnd = zend_get_std_object_handlers(); retval = std_hnd->has_property(object, member, check_empty TSRMLS_CC); http://cvs.php.net/viewvc.cgi/php-src/ext/dom/tests/bug35342.phpt?r1=1.1.2.2.2.3&r2=1.1.2.2.2.4&diff_format=u Index: php-src/ext/dom/tests/bug35342.phpt diff -u php-src/ext/dom/tests/bug35342.phpt:1.1.2.2.2.3 php-src/ext/dom/tests/bug35342.phpt:1.1.2.2.2.4 --- php-src/ext/dom/tests/bug35342.phpt:1.1.2.2.2.3 Fri Jul 27 00:20:43 2007 +++ php-src/ext/dom/tests/bug35342.phpt Mon Aug 6 16:22:24 2007 @@ -10,8 +10,11 @@ $nodelist = $dom->getElementsByTagName("foo"); var_dump($nodelist->length, isset($nodelist->length), isset($nodelist->foo)); +var_dump(empty($nodelist->length), empty($nodelist->foo)); ?> --EXPECT-- int(2) bool(true) bool(false) +bool(false) +bool(true) http://cvs.php.net/viewvc.cgi/php-src/ext/dom/tests/bug42082.phpt?view=markup&rev=1.1 Index: php-src/ext/dom/tests/bug42082.phpt +++ php-src/ext/dom/tests/bug42082.phpt --TEST-- Bug #42082 (NodeList length zero should be empty) --FILE-- <?php $doc = new DOMDocument(); $xpath = new DOMXPath($doc); $nodes = $xpath->query('*'); var_dump($nodes); var_dump($nodes->length); $length = $nodes->length; var_dump(empty($nodes->length), empty($lenght)); $doc->loadXML("<element></element>"); var_dump($doc->firstChild->nodeValue, empty($doc->firstChild->nodeValue), isset($doc->firstChild->nodeValue)); var_dump(empty($doc->nodeType), empty($doc->firstChild->nodeType)) ?> --EXPECTF-- object(DOMNodeList)#%d (0) { } int(0) bool(true) bool(true) string(0) "" bool(true) bool(true) bool(false) bool(false) --UEXPECTF-- object(DOMNodeList)#%d (0) { } int(0) bool(true) bool(true) unicode(0) "" bool(true) bool(true) bool(false) bool(false)

« previous php.cvs (#45739) next »