diff --git a/Zend/tests/bug72943.phpt b/Zend/tests/bug72943.phpt new file mode 100644 index 00000000000..8bab6de4564 --- /dev/null +++ b/Zend/tests/bug72943.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #72943 (assign_dim on string doesn't reset hval) +--FILE-- + 1); + +$a = "lest"; +var_dump($array[$a]); +$a[0] = "f"; +var_dump($array[$a]); +$a[0] = "t"; +var_dump($array[$a]); +?> +--EXPECTF-- +Notice: Undefined index: lest in %sbug72943.php on line %d +NULL + +Notice: Undefined index: fest in %sbug72943.php on line %d +NULL +int(1) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index d2411ad5c3b..f0f249e2434 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1330,6 +1330,7 @@ static zend_never_inline void zend_assign_to_string_offset(zval *str, zval *dim, zend_string_release(old_str); } else { SEPARATE_STRING(str); + zend_string_forget_hash_val(Z_STR_P(str)); } Z_STRVAL_P(str)[offset] = c;