From: Nikita Popov Date: Wed, 4 Jan 2017 23:49:19 +0000 (+0100) Subject: Add Z_EXTRA macro X-Git-Tag: php-7.1.1RC1~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=49d90dcc4d9319419a05146bafd4df8f4399c697;p=php Add Z_EXTRA macro For use with u2 values which don't deserve a custom macro... --- diff --git a/Zend/zend_types.h b/Zend/zend_types.h index 32f2334086..fbf990821b 100644 --- a/Zend/zend_types.h +++ b/Zend/zend_types.h @@ -139,6 +139,7 @@ struct _zval_struct { uint32_t fe_iter_idx; /* foreach iterator index */ uint32_t access_flags; /* class constant access flags */ uint32_t property_guard; /* single property guard */ + uint32_t extra; /* not further specified */ } u2; }; @@ -364,6 +365,9 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) { #define Z_ACCESS_FLAGS(zval) (zval).u2.access_flags #define Z_ACCESS_FLAGS_P(zval_p) Z_ACCESS_FLAGS(*(zval_p)) +#define Z_EXTRA(zval) (zval).u2.extra +#define Z_EXTRA_P(zval_p) Z_EXTRA(*(zval_p)) + #define Z_COUNTED(zval) (zval).value.counted #define Z_COUNTED_P(zval_p) Z_COUNTED(*(zval_p)) diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c index 15b01017a4..609ed45bd1 100644 --- a/ext/standard/var_unserializer.c +++ b/ext/standard/var_unserializer.c @@ -142,7 +142,7 @@ PHPAPI zval *var_tmp_var(php_unserialize_data_t *var_hashx) (*var_hashx)->last_dtor = var_hash; } ZVAL_UNDEF(&var_hash->data[var_hash->used_slots]); - Z_ACCESS_FLAGS(var_hash->data[var_hash->used_slots]) = 0; + Z_EXTRA(var_hash->data[var_hash->used_slots]) = 0; return &var_hash->data[var_hash->used_slots++]; } @@ -212,7 +212,7 @@ PHPAPI void var_destroy(php_unserialize_data_t *var_hashx) #endif /* Perform delayed __wakeup calls */ - if (Z_ACCESS_FLAGS_P(zv) == VAR_WAKEUP_FLAG) { + if (Z_EXTRA_P(zv) == VAR_WAKEUP_FLAG) { if (!wakeup_failed) { zval retval; if (Z_ISUNDEF(wakeup_name)) { @@ -562,7 +562,7 @@ static inline int object_common2(UNSERIALIZE_PARAMETER, zend_long elements) /* Delay __wakeup call until end of serialization */ zval *wakeup_var = var_tmp_var(var_hash); ZVAL_COPY(wakeup_var, rval); - Z_ACCESS_FLAGS_P(wakeup_var) = VAR_WAKEUP_FLAG; + Z_EXTRA_P(wakeup_var) = VAR_WAKEUP_FLAG; } return finish_nested_data(UNSERIALIZE_PASSTHRU); diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re index c9272e92be..8906c353b3 100644 --- a/ext/standard/var_unserializer.re +++ b/ext/standard/var_unserializer.re @@ -140,7 +140,7 @@ PHPAPI zval *var_tmp_var(php_unserialize_data_t *var_hashx) (*var_hashx)->last_dtor = var_hash; } ZVAL_UNDEF(&var_hash->data[var_hash->used_slots]); - Z_ACCESS_FLAGS(var_hash->data[var_hash->used_slots]) = 0; + Z_EXTRA(var_hash->data[var_hash->used_slots]) = 0; return &var_hash->data[var_hash->used_slots++]; } @@ -210,7 +210,7 @@ PHPAPI void var_destroy(php_unserialize_data_t *var_hashx) #endif /* Perform delayed __wakeup calls */ - if (Z_ACCESS_FLAGS_P(zv) == VAR_WAKEUP_FLAG) { + if (Z_EXTRA_P(zv) == VAR_WAKEUP_FLAG) { if (!wakeup_failed) { zval retval; if (Z_ISUNDEF(wakeup_name)) { @@ -566,7 +566,7 @@ static inline int object_common2(UNSERIALIZE_PARAMETER, zend_long elements) /* Delay __wakeup call until end of serialization */ zval *wakeup_var = var_tmp_var(var_hash); ZVAL_COPY(wakeup_var, rval); - Z_ACCESS_FLAGS_P(wakeup_var) = VAR_WAKEUP_FLAG; + Z_EXTRA_P(wakeup_var) = VAR_WAKEUP_FLAG; } return finish_nested_data(UNSERIALIZE_PASSTHRU);