summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2017-01-05 00:49:19 +0100
committerNikita Popov <nikic@php.net>2017-01-05 00:49:19 +0100
commit49d90dcc4d9319419a05146bafd4df8f4399c697 (patch)
tree6f978a3e5eb6e4dae2b602d7108a8f6a46cc2866
parent8d8e94936959eb2466ec77d1e537427f92650363 (diff)
downloadphp-git-49d90dcc4d9319419a05146bafd4df8f4399c697.tar.gz
Add Z_EXTRA macro
For use with u2 values which don't deserve a custom macro...
-rw-r--r--Zend/zend_types.h4
-rw-r--r--ext/standard/var_unserializer.c6
-rw-r--r--ext/standard/var_unserializer.re6
3 files changed, 10 insertions, 6 deletions
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);