]> granicus.if.org Git - php/commitdiff
MFB proper fix for #24592
authorSascha Schumann <sas@php.net>
Tue, 22 Jul 2003 01:11:07 +0000 (01:11 +0000)
committerSascha Schumann <sas@php.net>
Tue, 22 Jul 2003 01:11:07 +0000 (01:11 +0000)
ext/session/session.c

index f35fd9b4540f2f9c450c5b5e09c4de9218e38d51..31f9df702a097720154793890de92d4d04a1c9af 100644 (file)
@@ -727,19 +727,18 @@ static int migrate_global(HashTable *ht, HashPosition *pos TSRMLS_DC)
        uint str_len;
        ulong num_key;
        int n;
-       zval **val = NULL;
+       zval **val;
        int ret = 0;
        
        n = zend_hash_get_current_key_ex(ht, &str, &str_len, &num_key, 0, pos);
 
        switch (n) {
                case HASH_KEY_IS_STRING:
-                       if (zend_hash_find(&EG(symbol_table), str, str_len, (void **) &val) == SUCCESS && val) {
-                               if (!PZVAL_IS_REF(*val)) {
-                                       (*val)->is_ref = 1;
-                                       (*val)->refcount += 1;
-                                       zend_hash_update(ht, str, str_len, val, sizeof(zval *), NULL);
-                               }
+                       if (zend_hash_find(&EG(symbol_table), str, str_len, 
+                                               (void **) &val) == SUCCESS 
+                                       && val && Z_TYPE_PP(val) != IS_NULL) {
+                               ZEND_SET_SYMBOL_WITH_LENGTH(ht, str, str_len, *val, 
+                                               (*val)->refcount + 1 , 1);
                                ret = 1;
                        }
                        break;