summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2005-08-12 12:58:41 +0000
committerDmitry Stogov <dmitry@php.net>2005-08-12 12:58:41 +0000
commit9c544c06955462a0c6614a94fa52d658c30fe6dd (patch)
tree8423b068d641e108a3cf2299b41e0bb80ffb9162
parentf39c77dda06542f5bb42ca8144f123a26a0b201a (diff)
downloadphp-git-9c544c06955462a0c6614a94fa52d658c30fe6dd.tar.gz
Fixed support fot provate properties in unicode mode.
-rw-r--r--Zend/zend_object_handlers.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index ff0d59a4b1..3a5014c948 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -182,9 +182,10 @@ ZEND_API struct _zend_property_info *zend_get_property_info(zend_class_entry *ce
zend_bool denied_access = 0;
ulong h;
- if (Z_STRVAL_P(member)[0] == '\0') {
+ if ((Z_TYPE_P(member) == IS_UNICODE && Z_USTRVAL_P(member)[0] == 0) ||
+ Z_STRVAL_P(member)[0] == '\0') {
if (!silent) {
- if (Z_STRLEN_P(member) == 0) {
+ if (Z_UNILEN_P(member) == 0) {
zend_error(E_ERROR, "Cannot access empty property");
} else {
zend_error(E_ERROR, "Cannot access property started with '\\0'");
@@ -192,8 +193,8 @@ ZEND_API struct _zend_property_info *zend_get_property_info(zend_class_entry *ce
}
return NULL;
}
- h = zend_get_hash_value(Z_STRVAL_P(member), Z_STRLEN_P(member) + 1);
- if (zend_hash_quick_find(&ce->properties_info, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, h, (void **) &property_info)==SUCCESS) {
+ h = zend_u_get_hash_value(Z_TYPE_P(member), Z_UNIVAL_P(member), Z_UNILEN_P(member) + 1);
+ if (zend_u_hash_quick_find(&ce->properties_info, Z_TYPE_P(member), Z_UNIVAL_P(member), Z_UNILEN_P(member)+1, h, (void **) &property_info)==SUCCESS) {
if(property_info->flags & ZEND_ACC_SHADOW) {
/* if it's a shadow - go to access it's private */
property_info = NULL;