]> granicus.if.org Git - php/commitdiff
if 2 of 3 tests are okay still do the 3rd test !
authorStefan Esser <sesser@php.net>
Sun, 16 Jan 2005 22:02:50 +0000 (22:02 +0000)
committerStefan Esser <sesser@php.net>
Sun, 16 Jan 2005 22:02:50 +0000 (22:02 +0000)
ext/standard/var_unserializer.c
ext/standard/var_unserializer.re

index 18c405b649f3c4792fd0f23777565d92de6acd64..0e94b55fa34b9e0f9628b0e7a14ca1fd7f0ba733 100644 (file)
@@ -56,9 +56,9 @@ static inline void var_push(php_unserialize_data_t *var_hashx, zval **rval)
        var_hash->data[var_hash->used_slots++] = *rval;
 }
 
-static inline void var_push(php_unserialize_data_t *var_hashx, zval **rval)
+static inline void var_push_dtor(php_unserialize_data_t *var_hashx, zval **rval)
 {
-       var_entries *var_hash = var_hashx->first, *prev = NULL;
+       var_entries *var_hash = var_hashx->first_dtor, *prev = NULL;
 
        while (var_hash && var_hash->used_slots == VAR_ENTRIES_MAX) {
                prev = var_hash;
@@ -70,12 +70,13 @@ static inline void var_push(php_unserialize_data_t *var_hashx, zval **rval)
                var_hash->used_slots = 0;
                var_hash->next = 0;
 
-               if (!var_hashx->first)
-                       var_hashx->first = var_hash;
+               if (!var_hashx->first_dtor)
+                       var_hashx->first_dtor = var_hash;
                else
                        prev->next = var_hash;
        }
 
+       (*rval)->refcount++;
        var_hash->data[var_hash->used_slots++] = *rval;
 }
 
index f354291815369fd42e488e70c482da1a84f9ca95..b1fc58b52eea5d5c7b6da9997a078b792eeb1515 100644 (file)
@@ -54,9 +54,9 @@ static inline void var_push(php_unserialize_data_t *var_hashx, zval **rval)
        var_hash->data[var_hash->used_slots++] = *rval;
 }
 
-static inline void var_push(php_unserialize_data_t *var_hashx, zval **rval)
+static inline void var_push_dtor(php_unserialize_data_t *var_hashx, zval **rval)
 {
-       var_entries *var_hash = var_hashx->first, *prev = NULL;
+       var_entries *var_hash = var_hashx->first_dtor, *prev = NULL;
 
        while (var_hash && var_hash->used_slots == VAR_ENTRIES_MAX) {
                prev = var_hash;
@@ -68,12 +68,13 @@ static inline void var_push(php_unserialize_data_t *var_hashx, zval **rval)
                var_hash->used_slots = 0;
                var_hash->next = 0;
 
-               if (!var_hashx->first)
-                       var_hashx->first = var_hash;
+               if (!var_hashx->first_dtor)
+                       var_hashx->first_dtor = var_hash;
                else
                        prev->next = var_hash;
        }
 
+       (*rval)->refcount++;
        var_hash->data[var_hash->used_slots++] = *rval;
 }