dmitry Tue Jul 24 11:39:56 2007 UTC
Added files: (Branch: PHP_5_2)
/ZendEngine2/tests bug40757.phpt bug41929.phpt
Modified files:
/php-src NEWS
/ZendEngine2 zend_builtin_functions.c zend_object_handlers.c
/ZendEngine2/tests bug27798.phpt
/php-src/ext/pdo/tests pdo_018.phpt
/php-src/tests/classes visibility_005.phpt
Log:
Fixed bug #40757 (get_object_vars get nothing in child class)
Fixed bug #41929 (Foreach on object does not iterate over all visible
properties)
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.850&r2=1.2027.2.547.2.851&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.850 php-src/NEWS:1.2027.2.547.2.851
--- php-src/NEWS:1.2027.2.547.2.850 Tue Jul 24 11:35:08 2007
+++ php-src/NEWS Tue Jul 24 11:39:55 2007
@@ -76,6 +76,8 @@
from class hierarchy). (robin_fernandes at uk dot ibm dot com)
- Fixed bug #41947 (SimpleXML incorrectly registers empty strings as
namespaces). (Rob)
+- Fixed bug #41929 (Foreach on object does not iterate over all visible
+ properties). (Dmitry)
- Fixed bug #41919 (crash in string to array conversion).
(judas dot iscariote at gmail dot com, Ilia)
- Fixed bug #41908 (CFLAGS="-Os" ./configure --enable-debug fails).
@@ -160,6 +162,7 @@
on Windows). (Scott, Andrey)
- Fixed bug #41127 (Memory leak in ldap_{first|next}_attribute functions).
(Jani)
+- Fixed bug #40757 (get_object_vars get nothing in child class). (Dmitry)
- Fixed bug #40419 (Trailing slash in CGI request does not work). (Dmitry)
- Fixed bug #39330 (apache2handler does not call shutdown actions before
apache child die). (isk at ecommerce dot com, Gopal, Tony)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_builtin_functions.c?r1=1.277.2.12.2.18&r2=1.277.2.12.2.19&diff_format=u
Index: ZendEngine2/zend_builtin_functions.c
diff -u ZendEngine2/zend_builtin_functions.c:1.277.2.12.2.18
ZendEngine2/zend_builtin_functions.c:1.277.2.12.2.19
--- ZendEngine2/zend_builtin_functions.c:1.277.2.12.2.18 Sat Jun 9
08:38:44 2007
+++ ZendEngine2/zend_builtin_functions.c Tue Jul 24 11:39:55 2007
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_builtin_functions.c,v 1.277.2.12.2.18 2007/06/09 08:38:44
johannes Exp $ */
+/* $Id: zend_builtin_functions.c,v 1.277.2.12.2.19 2007/07/24 11:39:55 dmitry
Exp $ */
#include "zend.h"
#include "zend_API.h"
@@ -789,7 +789,7 @@
char *key, *prop_name, *class_name;
uint key_len;
ulong num_index;
- int instanceof;
+ zend_object *zobj;
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &obj) == FAILURE)
{
ZEND_WRONG_PARAM_COUNT();
@@ -808,7 +808,7 @@
RETURN_FALSE;
}
- instanceof = EG(This) && instanceof_function(Z_OBJCE_P(EG(This)),
Z_OBJCE_PP(obj) TSRMLS_CC);
+ zobj = zend_objects_get_address(*obj TSRMLS_CC);
array_init(return_value);
@@ -816,17 +816,11 @@
while (zend_hash_get_current_data_ex(properties, (void **) &value,
&pos) == SUCCESS) {
if (zend_hash_get_current_key_ex(properties, &key, &key_len,
&num_index, 0, &pos) == HASH_KEY_IS_STRING) {
- if (key[0]) {
+ if (zend_check_property_access(zobj, key, key_len-1
TSRMLS_CC) == SUCCESS) {
+ zend_unmangle_property_name(key, key_len-1,
&class_name, &prop_name);
/* Not separating references */
(*value)->refcount++;
- add_assoc_zval_ex(return_value, key, key_len,
*value);
- } else if (instanceof) {
- zend_unmangle_property_name(key, key_len-1,
&class_name, &prop_name);
- if (!memcmp(class_name, "*", 2) ||
(Z_OBJCE_P(EG(This)) == Z_OBJCE_PP(obj) && !strcmp(Z_OBJCE_P(EG(This))->name,
class_name))) {
- /* Not separating references */
- (*value)->refcount++;
- add_assoc_zval_ex(return_value,
prop_name, strlen(prop_name)+1, *value);
- }
+ add_assoc_zval_ex(return_value, prop_name,
strlen(prop_name)+1, *value);
}
}
zend_hash_move_forward_ex(properties, &pos);
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_object_handlers.c?r1=1.135.2.6.2.21&r2=1.135.2.6.2.22&diff_format=u
Index: ZendEngine2/zend_object_handlers.c
diff -u ZendEngine2/zend_object_handlers.c:1.135.2.6.2.21
ZendEngine2/zend_object_handlers.c:1.135.2.6.2.22
--- ZendEngine2/zend_object_handlers.c:1.135.2.6.2.21 Thu Jul 12 10:32:09 2007
+++ ZendEngine2/zend_object_handlers.c Tue Jul 24 11:39:55 2007
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_object_handlers.c,v 1.135.2.6.2.21 2007/07/12 10:32:09 dmitry Exp
$ */
+/* $Id: zend_object_handlers.c,v 1.135.2.6.2.22 2007/07/24 11:39:55 dmitry Exp
$ */
#include "zend.h"
#include "zend_globals.h"
@@ -152,7 +152,7 @@
case ZEND_ACC_PROTECTED:
return zend_check_protected(property_info->ce,
EG(scope));
case ZEND_ACC_PRIVATE:
- if (ce==EG(scope) && EG(scope)) {
+ if ((ce==EG(scope) || property_info->ce == EG(scope))
&& EG(scope)) {
return 1;
} else {
return 0;
http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/bug27798.phpt?r1=1.1&r2=1.1.6.1&diff_format=u
Index: ZendEngine2/tests/bug27798.phpt
diff -u ZendEngine2/tests/bug27798.phpt:1.1
ZendEngine2/tests/bug27798.phpt:1.1.6.1
--- ZendEngine2/tests/bug27798.phpt:1.1 Mon Oct 4 08:58:47 2004
+++ ZendEngine2/tests/bug27798.phpt Tue Jul 24 11:39:55 2007
@@ -49,12 +49,12 @@
}
Base::__construct
array(3) {
- ["Baz"]=>
- int(4)
["Foo"]=>
int(1)
["Bar"]=>
int(2)
+ ["Baz"]=>
+ int(3)
}
Child::__construct
array(3) {
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/pdo_018.phpt?r1=1.11.2.4&r2=1.11.2.4.2.1&diff_format=u
Index: php-src/ext/pdo/tests/pdo_018.phpt
diff -u php-src/ext/pdo/tests/pdo_018.phpt:1.11.2.4
php-src/ext/pdo/tests/pdo_018.phpt:1.11.2.4.2.1
--- php-src/ext/pdo/tests/pdo_018.phpt:1.11.2.4 Wed Oct 26 06:23:12 2005
+++ php-src/ext/pdo/tests/pdo_018.phpt Tue Jul 24 11:39:55 2007
@@ -179,9 +179,9 @@
===INSERT===
TestBase::serialize() =
'a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}'
TestDerived::serialize()
-TestBase::serialize() =
'a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}'
+TestBase::serialize() =
'a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}'
TestDerived::serialize()
-TestBase::serialize() =
'a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}'
+TestBase::serialize() =
'a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}'
===DATA===
array(4) {
[0]=>
@@ -189,9 +189,9 @@
[1]=>
string(91)
"a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}"
[2]=>
- string(144)
"a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}"
+ string(172)
"a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}"
[3]=>
- string(144)
"a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}"
+ string(172)
"a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}"
}
===FAILURE===
Exception:SQLSTATE[HY000]: General error: cannot unserialize class
@@ -211,22 +211,22 @@
["name"]=>
string(11) "TestDerived"
["val"]=>
- string(144)
"a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}"
+ string(172)
"a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}"
}
[2]=>
array(2) {
["name"]=>
NULL
["val"]=>
- string(144)
"a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";}"
+ string(172)
"a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";}"
}
}
===FETCHCLASS===
TestBase::unserialize(a:3:{s:7:"BasePub";s:6:"Public";s:7:"BasePro";s:9:"Protected";s:7:"BasePri";s:7:"Private";})
TestDerived::unserialize()
-TestBase::unserialize(a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";})
+TestBase::unserialize(a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";})
TestDerived::unserialize()
-TestBase::unserialize(a:4:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";})
+TestBase::unserialize(a:5:{s:7:"BasePub";s:13:"DerivedPublic";s:7:"BasePro";s:16:"DerivdeProtected";s:10:"DerivedPub";s:6:"Public";s:10:"DerivedPro";s:9:"Protected";s:7:"BasePri";s:7:"Private";})
array(3) {
[0]=>
object(TestBase)#%d (3) {
@@ -250,7 +250,7 @@
["DerivedPri:private"]=>
string(7) "Private"
["BasePri:private"]=>
- string(7) "Private"
+ string(8) "#Private"
}
[2]=>
object(TestLeaf)#%d (6) {
@@ -265,6 +265,6 @@
["DerivedPri:private"]=>
string(7) "Private"
["BasePri:private"]=>
- string(7) "Private"
+ string(8) "#Private"
}
}
http://cvs.php.net/viewvc.cgi/php-src/tests/classes/visibility_005.phpt?r1=1.1&r2=1.1.6.1&diff_format=u
Index: php-src/tests/classes/visibility_005.phpt
diff -u php-src/tests/classes/visibility_005.phpt:1.1
php-src/tests/classes/visibility_005.phpt:1.1.6.1
--- php-src/tests/classes/visibility_005.phpt:1.1 Fri Dec 19 10:16:08 2003
+++ php-src/tests/classes/visibility_005.phpt Tue Jul 24 11:39:56 2007
@@ -52,6 +52,7 @@
===derived::function===
a=>1
b=>2
+c=>3
d=>4
===derived,foreach===
a=>1
http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/bug40757.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/bug40757.phpt
+++ ZendEngine2/tests/bug40757.phpt
http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/bug41929.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/bug41929.phpt
+++ ZendEngine2/tests/bug41929.phpt
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php