@@ -11,20 +11,19 @@ inline int msgpack_convert_long_to_properties(
1111{
1212 if (* properties != NULL ) {
1313 zval * data , tplval , * dataval , prop_key_zv ;
14- zend_string * prop_key ;
14+ zend_string * prop_key , * unmangled_prop_key ;
1515 ulong prop_key_index ;
1616 const char * class_name , * prop_name ;
1717 size_t prop_len ;
1818
1919 for (;; zend_hash_move_forward_ex (* properties , prop_pos )) {
2020 if (zend_hash_get_current_key_ex (* properties , & prop_key , & prop_key_index , prop_pos ) == HASH_KEY_IS_STRING ) {
2121 zend_unmangle_property_name_ex (prop_key , & class_name , & prop_name , & prop_len );
22+ ZVAL_NEW_STR (& prop_key_zv , prop_key );
23+ unmangled_prop_key = zend_string_init (prop_name , prop_len , 0 );
2224
23- if (var == NULL || !zend_hash_exists (var , prop_key )) {
25+ if (var == NULL || !zend_hash_exists (var , unmangled_prop_key )) {
2426 if ((data = zend_hash_find (ht , prop_key )) != NULL ) {
25- prop_key = zend_string_init (prop_name , prop_len , 0 );
26- ZVAL_NEW_STR (& prop_key_zv , prop_key );
27-
2827 switch (Z_TYPE_P (data )) {
2928 case IS_ARRAY :
3029 {
@@ -35,40 +34,40 @@ inline int msgpack_convert_long_to_properties(
3534 MSGPACK_WARNING ("[msgpack] (%s) "
3635 "can't get data value by index" ,
3736 __FUNCTION__ );
38- zend_string_release (prop_key );
37+ zend_string_release (unmangled_prop_key );
3938 return FAILURE ;
4039 }
4140
4241 if (msgpack_convert_array (& tplval , data , & dataval ) == SUCCESS ) {
4342 zend_hash_move_forward_ex (* properties , prop_pos );
4443
4544 zend_update_property (Z_OBJCE_P (object ), object , prop_name , prop_len , & tplval );
46- zend_string_release (prop_key );
45+ zend_string_release (unmangled_prop_key );
4746 return SUCCESS ;
4847 }
49- zend_string_release (prop_key );
48+ zend_string_release (unmangled_prop_key );
5049 return FAILURE ;
5150 }
5251 case IS_OBJECT :
5352 {
5453 if (msgpack_convert_object (& tplval , data , & val ) == SUCCESS ) {
5554 zend_hash_move_forward_ex (* properties , prop_pos );
5655 zend_update_property (Z_OBJCE_P (object ), object , prop_name , prop_len , & tplval );
57- zend_string_release (prop_key );
56+ zend_string_release (unmangled_prop_key );
5857 return SUCCESS ;
5958 }
60- zend_string_release (prop_key );
59+ zend_string_release (unmangled_prop_key );
6160 return FAILURE ;
6261 }
6362 default :
6463 zend_hash_move_forward_ex (* properties , prop_pos );
6564 zend_update_property (Z_OBJCE_P (object ), object , prop_name , prop_len , val );
66- zend_string_release (prop_key );
65+ zend_string_release (unmangled_prop_key );
6766 return SUCCESS ;
6867 }
6968 }
7069 }
71- zend_string_release (prop_key );
70+ zend_string_release (unmangled_prop_key );
7271 } else {
7372 break ;
7473 }
@@ -345,9 +344,8 @@ int msgpack_convert_object(zval *return_value, zval *tpl, zval **value) {
345344 if (Z_TYPE_P (* value ) == IS_OBJECT ) {
346345 zend_class_entry * vce ;
347346
348- vce = Z_OBJCE_P (tpl );
349- if (strcmp (ce -> name -> val , vce -> name -> val ) == 0 )
350- {
347+ vce = Z_OBJCE_P (* value );
348+ if (zend_string_equals (ce -> name , vce -> name )) {
351349 * return_value = * * value ;
352350 zval_copy_ctor (return_value );
353351 zval_ptr_dtor (* value );
0 commit comments