@@ -423,41 +423,19 @@ ZEND_API int zend_check_property_access(zend_object *zobj, zend_string *prop_inf
423
423
}
424
424
/* }}} */
425
425
426
- static zend_long * zend_get_property_guard (zend_object * zobj , zend_property_info * property_info , zval * member ) /* {{{ */
426
+ static zend_long * zend_get_property_guard (zend_object * zobj , zval * member ) /* {{{ */
427
427
{
428
- zend_property_info info ;
429
428
zval stub , * guard ;
430
- zend_string * str = NULL ;
431
429
432
- if (!property_info ) {
433
- property_info = & info ;
434
- info .name = Z_STR_P (member );
435
- } else if (property_info -> name -> val [0 ] == '\0' ){
436
- const char * class_name = NULL , * prop_name = NULL ;
437
- size_t prop_name_len ;
438
- zend_unmangle_property_name_ex (property_info -> name , & class_name ,
439
- & prop_name , & prop_name_len );
440
- if (class_name ) {
441
- /* use unmangled name for protected properties */
442
- str = info .name = zend_string_init (prop_name , prop_name_len , 0 );
443
- property_info = & info ;
444
- }
445
- }
446
430
if (!zobj -> guards ) {
447
431
ALLOC_HASHTABLE (zobj -> guards );
448
432
zend_hash_init (zobj -> guards , 8 , NULL , NULL , 0 );
449
- } else if ((guard = zend_hash_find (zobj -> guards , property_info -> name )) != NULL ) {
450
- if (str ) {
451
- zend_string_release (str );
452
- }
433
+ } else if ((guard = zend_hash_find (zobj -> guards , Z_STR_P (member ))) != NULL ) {
453
434
return & Z_LVAL_P (guard );
454
435
}
455
436
456
437
ZVAL_LONG (& stub , 0 );
457
- guard = zend_hash_add_new (zobj -> guards , property_info -> name , & stub );
458
- if (str ) {
459
- zend_string_release (str );
460
- }
438
+ guard = zend_hash_add_new (zobj -> guards , Z_STR_P (member ), & stub );
461
439
return & Z_LVAL_P (guard );
462
440
}
463
441
/* }}} */
@@ -500,7 +478,7 @@ zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_
500
478
501
479
/* magic get */
502
480
if (zobj -> ce -> __get ) {
503
- zend_long * guard = zend_get_property_guard (zobj , property_info , member );
481
+ zend_long * guard = zend_get_property_guard (zobj , member );
504
482
if (!((* guard ) & IN_GET )) {
505
483
zval tmp_object ;
506
484
@@ -633,7 +611,7 @@ ZEND_API void zend_std_write_property(zval *object, zval *member, zval *value, v
633
611
634
612
/* magic set */
635
613
if (zobj -> ce -> __set ) {
636
- zend_long * guard = zend_get_property_guard (zobj , property_info , member );
614
+ zend_long * guard = zend_get_property_guard (zobj , member );
637
615
638
616
if (!((* guard ) & IN_SET )) {
639
617
zval tmp_object ;
@@ -807,7 +785,7 @@ static zval *zend_std_get_property_ptr_ptr(zval *object, zval *member, int type,
807
785
}
808
786
809
787
if (!zobj -> ce -> __get ||
810
- (guard = zend_get_property_guard (zobj , property_info , member )) == NULL ||
788
+ (guard = zend_get_property_guard (zobj , member )) == NULL ||
811
789
(property_info && ((* guard ) & IN_GET ))) {
812
790
813
791
ZVAL_NULL (& tmp );
@@ -873,7 +851,7 @@ static void zend_std_unset_property(zval *object, zval *member, void **cache_slo
873
851
874
852
/* magic unset */
875
853
if (zobj -> ce -> __unset ) {
876
- zend_long * guard = zend_get_property_guard (zobj , property_info , member );
854
+ zend_long * guard = zend_get_property_guard (zobj , member );
877
855
if (!((* guard ) & IN_UNSET )) {
878
856
zval tmp_object ;
879
857
@@ -1481,7 +1459,7 @@ static int zend_std_has_property(zval *object, zval *member, int has_set_exists,
1481
1459
1482
1460
result = 0 ;
1483
1461
if ((has_set_exists != 2 ) && zobj -> ce -> __isset ) {
1484
- zend_long * guard = zend_get_property_guard (zobj , property_info , member );
1462
+ zend_long * guard = zend_get_property_guard (zobj , member );
1485
1463
1486
1464
if (!((* guard ) & IN_ISSET )) {
1487
1465
zval rv ;
0 commit comments