Browse Source

-Fixed bug #30074 (apparent symbol table error with extract($blah, EXTR_REFS))

# appoligies, I did this in reverse (applied to PHP_5_2) I should have MFH.
migration/RELEASE_1_0_0
Brian Shire 20 years ago
parent
commit
3b4c2e0458
  1. 2
      ext/standard/array.c
  2. 15
      ext/standard/tests/array/bug30074.phpt

2
ext/standard/array.c

@ -1492,7 +1492,7 @@ PHP_FUNCTION(extract)
*orig_var = *entry;
} else {
if (var_array->refcount > 1) {
if (var_array->refcount > 1 || *entry == EG(uninitialized_zval_ptr)) {
SEPARATE_ZVAL_TO_MAKE_IS_REF(entry);
} else {
(*entry)->is_ref = 1;

15
ext/standard/tests/array/bug30074.phpt

@ -0,0 +1,15 @@
--TEST--
Bug #30074 (EG(uninitialized_zval_ptr) gets set to reference using EXTR_REFS, affecting later values)
--FILE--
<?php
error_reporting(E_ALL & ~E_NOTICE); // We don't want the notice for $undefined
$result = extract(array('a'=>$undefined), EXTR_REFS);
var_dump(array($a));
echo "Done\n";
?>
--EXPECT--
array(1) {
[0]=>
NULL
}
Done
Loading…
Cancel
Save