]> granicus.if.org Git - php/commitdiff
Add Z_EXTRA macro
authorNikita Popov <nikic@php.net>
Wed, 4 Jan 2017 23:49:19 +0000 (00:49 +0100)
committerNikita Popov <nikic@php.net>
Wed, 4 Jan 2017 23:49:19 +0000 (00:49 +0100)
For use with u2 values which don't deserve a custom macro...

Zend/zend_types.h
ext/standard/var_unserializer.c
ext/standard/var_unserializer.re

index 32f2334086fd7579e83c17704c5f25bc08bc5874..fbf990821b7ab3d06d6666557b6188534fa46444 100644 (file)
@@ -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))
 
index 15b01017a4049d8ea5e38d2b72e4a26354fb4fbe..609ed45bd1f65b0e0fdab30a01089c8c3a6fe8f1 100644 (file)
@@ -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);
index c9272e92be671bb386d419215dbc36ec4d74384b..8906c353b37ae04ae0bb2b01901e4fbf600e96e9 100644 (file)
@@ -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);