Annotation of embedaddon/php/ext/standard/tests/array/bug25708.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Bug #25708 (extract($GLOBALS, EXTR_REFS) mangles $GLOBALS)
        !             3: --FILE--
        !             4: <?php
        !             5: function foo($ref, $alt) {
        !             6:        unset($GLOBALS['a']);
        !             7:        unset($GLOBALS['b']);
        !             8:        $GLOBALS['a'] = 1;
        !             9:        $GLOBALS['b'] = 2;
        !            10: 
        !            11:        $org_a = $GLOBALS['a'];
        !            12:        $org_b = $GLOBALS['b'];
        !            13: 
        !            14:        if ($ref) {
        !            15:                global $a, $b;
        !            16:        } else {
        !            17:                /* zval temp_var(NULL); // refcount = 1
        !            18:                 * a = temp_var[x] // refcount = 2
        !            19:                 */
        !            20:                $a = NULL;
        !            21:                $b = NULL;
        !            22:        }
        !            23: 
        !            24:        debug_zval_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']);
        !            25:        echo "--\n";
        !            26:        if ($alt) {
        !            27:                $a = &$GLOBALS['a'];
        !            28:                $b = &$GLOBALS['b'];
        !            29:        } else {
        !            30:                extract($GLOBALS, EXTR_REFS);
        !            31:        }
        !            32:        debug_zval_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']);
        !            33:        echo "--\n";
        !            34:        $a = &$GLOBALS['a'];
        !            35:        $b = &$GLOBALS['b'];
        !            36:        debug_zval_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']);
        !            37:        echo "--\n";
        !            38:        $GLOBALS['b'] = 3;
        !            39:        debug_zval_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']);
        !            40:        echo "--\n";
        !            41:        $a = 4;
        !            42:        debug_zval_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']);
        !            43:        echo "--\n";
        !            44:        $c = $b;
        !            45:        debug_zval_dump($b, $GLOBALS['b'], $c);
        !            46:        echo "--\n";
        !            47:        $b = 'x';
        !            48:        debug_zval_dump($a, $b, $GLOBALS['a'], $GLOBALS['b'], $c);
        !            49:        echo "--\n";
        !            50:        debug_zval_dump($org_a, $org_b);
        !            51:        echo "----";
        !            52:        if ($ref) echo 'r';
        !            53:        if ($alt) echo 'a';
        !            54:        echo "\n";
        !            55: }
        !            56: 
        !            57: $a = 'ok';
        !            58: $b = 'ok';
        !            59: $_a = $a;
        !            60: $_b = $b;
        !            61: 
        !            62: foo(false, true);
        !            63: foo(true, true);
        !            64: foo(false, false);
        !            65: foo(true, false);
        !            66: 
        !            67: debug_zval_dump($_a, $_b);
        !            68: ?>
        !            69: --EXPECT--
        !            70: NULL refcount(2)
        !            71: NULL refcount(2)
        !            72: long(1) refcount(3)
        !            73: long(2) refcount(3)
        !            74: --
        !            75: long(1) refcount(1)
        !            76: long(2) refcount(1)
        !            77: long(1) refcount(1)
        !            78: long(2) refcount(1)
        !            79: --
        !            80: long(1) refcount(1)
        !            81: long(2) refcount(1)
        !            82: long(1) refcount(1)
        !            83: long(2) refcount(1)
        !            84: --
        !            85: long(1) refcount(1)
        !            86: long(3) refcount(1)
        !            87: long(1) refcount(1)
        !            88: long(3) refcount(1)
        !            89: --
        !            90: long(4) refcount(1)
        !            91: long(3) refcount(1)
        !            92: long(4) refcount(1)
        !            93: long(3) refcount(1)
        !            94: --
        !            95: long(3) refcount(1)
        !            96: long(3) refcount(1)
        !            97: long(3) refcount(2)
        !            98: --
        !            99: long(4) refcount(1)
        !           100: string(1) "x" refcount(1)
        !           101: long(4) refcount(1)
        !           102: string(1) "x" refcount(1)
        !           103: long(3) refcount(2)
        !           104: --
        !           105: long(1) refcount(2)
        !           106: long(2) refcount(2)
        !           107: ----a
        !           108: long(1) refcount(1)
        !           109: long(2) refcount(1)
        !           110: long(1) refcount(1)
        !           111: long(2) refcount(1)
        !           112: --
        !           113: long(1) refcount(1)
        !           114: long(2) refcount(1)
        !           115: long(1) refcount(1)
        !           116: long(2) refcount(1)
        !           117: --
        !           118: long(1) refcount(1)
        !           119: long(2) refcount(1)
        !           120: long(1) refcount(1)
        !           121: long(2) refcount(1)
        !           122: --
        !           123: long(1) refcount(1)
        !           124: long(3) refcount(1)
        !           125: long(1) refcount(1)
        !           126: long(3) refcount(1)
        !           127: --
        !           128: long(4) refcount(1)
        !           129: long(3) refcount(1)
        !           130: long(4) refcount(1)
        !           131: long(3) refcount(1)
        !           132: --
        !           133: long(3) refcount(1)
        !           134: long(3) refcount(1)
        !           135: long(3) refcount(2)
        !           136: --
        !           137: long(4) refcount(1)
        !           138: string(1) "x" refcount(1)
        !           139: long(4) refcount(1)
        !           140: string(1) "x" refcount(1)
        !           141: long(3) refcount(2)
        !           142: --
        !           143: long(1) refcount(2)
        !           144: long(2) refcount(2)
        !           145: ----ra
        !           146: NULL refcount(2)
        !           147: NULL refcount(2)
        !           148: long(1) refcount(3)
        !           149: long(2) refcount(3)
        !           150: --
        !           151: long(1) refcount(1)
        !           152: long(2) refcount(1)
        !           153: long(1) refcount(1)
        !           154: long(2) refcount(1)
        !           155: --
        !           156: long(1) refcount(1)
        !           157: long(2) refcount(1)
        !           158: long(1) refcount(1)
        !           159: long(2) refcount(1)
        !           160: --
        !           161: long(1) refcount(1)
        !           162: long(3) refcount(1)
        !           163: long(1) refcount(1)
        !           164: long(3) refcount(1)
        !           165: --
        !           166: long(4) refcount(1)
        !           167: long(3) refcount(1)
        !           168: long(4) refcount(1)
        !           169: long(3) refcount(1)
        !           170: --
        !           171: long(3) refcount(1)
        !           172: long(3) refcount(1)
        !           173: long(3) refcount(2)
        !           174: --
        !           175: long(4) refcount(1)
        !           176: string(1) "x" refcount(1)
        !           177: long(4) refcount(1)
        !           178: string(1) "x" refcount(1)
        !           179: long(3) refcount(2)
        !           180: --
        !           181: long(1) refcount(2)
        !           182: long(2) refcount(2)
        !           183: ----
        !           184: long(1) refcount(1)
        !           185: long(2) refcount(1)
        !           186: long(1) refcount(1)
        !           187: long(2) refcount(1)
        !           188: --
        !           189: long(1) refcount(1)
        !           190: long(2) refcount(1)
        !           191: long(1) refcount(1)
        !           192: long(2) refcount(1)
        !           193: --
        !           194: long(1) refcount(1)
        !           195: long(2) refcount(1)
        !           196: long(1) refcount(1)
        !           197: long(2) refcount(1)
        !           198: --
        !           199: long(1) refcount(1)
        !           200: long(3) refcount(1)
        !           201: long(1) refcount(1)
        !           202: long(3) refcount(1)
        !           203: --
        !           204: long(4) refcount(1)
        !           205: long(3) refcount(1)
        !           206: long(4) refcount(1)
        !           207: long(3) refcount(1)
        !           208: --
        !           209: long(3) refcount(1)
        !           210: long(3) refcount(1)
        !           211: long(3) refcount(2)
        !           212: --
        !           213: long(4) refcount(1)
        !           214: string(1) "x" refcount(1)
        !           215: long(4) refcount(1)
        !           216: string(1) "x" refcount(1)
        !           217: long(3) refcount(2)
        !           218: --
        !           219: long(1) refcount(2)
        !           220: long(2) refcount(2)
        !           221: ----r
        !           222: string(2) "ok" refcount(2)
        !           223: string(2) "ok" refcount(2)

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>