diff options
author | Xinchen Hui <laruence@gmail.com> | 2015-12-04 06:51:16 -0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2015-12-04 06:51:16 -0800 |
commit | 311eb2b11e97336a4c82b43b2422a30d346e5679 (patch) | |
tree | 28c2baf40c67f8ed0037d658606f6ca1aeec55f4 /ext | |
parent | 7ac24aa661b9bc9983bb92a734e2c9993db147c5 (diff) | |
download | php-git-311eb2b11e97336a4c82b43b2422a30d346e5679.tar.gz |
Missed one place
Diffstat (limited to 'ext')
-rw-r--r-- | ext/spl/spl_array.c | 6 | ||||
-rw-r--r-- | ext/spl/tests/bug71028.phpt | 7 |
2 files changed, 10 insertions, 3 deletions
diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c index da572f09b9..3b704c7def 100644 --- a/ext/spl/spl_array.c +++ b/ext/spl/spl_array.c @@ -514,7 +514,8 @@ static void spl_array_unset_dimension_ex(int check_inherited, zval *object, zval return; } - switch(Z_TYPE_P(offset)) { +try_again: + switch (Z_TYPE_P(offset)) { case IS_STRING: ht = spl_array_get_hash_table(intern, 0); if (ht->u.v.nApplyCount > 0) { @@ -574,6 +575,9 @@ num_index: zend_error(E_NOTICE,"Undefined offset: %pd", index); } break; + case IS_REFERENCE: + ZVAL_DEREF(offset); + goto try_again; default: zend_error(E_WARNING, "Illegal offset type"); return; diff --git a/ext/spl/tests/bug71028.phpt b/ext/spl/tests/bug71028.phpt index 42d4ea32b1..b8f0cc962f 100644 --- a/ext/spl/tests/bug71028.phpt +++ b/ext/spl/tests/bug71028.phpt @@ -14,8 +14,11 @@ cast($b); var_dump(isset($a[$b])); $a[$b] = "okey"; -echo $a[$b]; +var_dump($a[$b]); +unset($a[$b]); +var_dump(isset($a[$b])); ?> --EXPECT-- bool(true) -okey +string(4) "okey" +bool(false) |