--- /dev/null
+--TEST--
+Bug #54262 (Crash when assigning value to a dimension in a non-array)
+--FILE--
+<?php
+$a = '0';
+var_dump(isset($a['b']));
+$simpleString = preg_match('//', '', $a->a);
+$simpleString["wrong"] = "f";
+echo "ok\n";
+?>
+--EXPECTF--
+bool(true)
+
+Warning: Attempt to modify property of non-object in %s/Zend/tests/bug54262.php on line 4
+
+Warning: Cannot use a scalar value as an array in %s/Zend/tests/bug54262.php on line 5
+ok
\ No newline at end of file
}
if (OP1_TYPE == IS_VAR && UNEXPECTED(*varptr_ptr == &EG(error_zval))) {
- Z_DELREF_PP(varptr_ptr);
- ALLOC_ZVAL(*varptr_ptr);
- INIT_ZVAL(**varptr_ptr);
- Z_SET_REFCOUNT_PP(varptr_ptr, 0);
+ ALLOC_INIT_ZVAL(varptr);
+ zend_vm_stack_push(varptr TSRMLS_CC);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
}
if (EX(function_state).function->type == ZEND_INTERNAL_FUNCTION && !ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->op2.opline_num)) {
}
if (IS_VAR == IS_VAR && UNEXPECTED(*varptr_ptr == &EG(error_zval))) {
- Z_DELREF_PP(varptr_ptr);
- ALLOC_ZVAL(*varptr_ptr);
- INIT_ZVAL(**varptr_ptr);
- Z_SET_REFCOUNT_PP(varptr_ptr, 0);
+ ALLOC_INIT_ZVAL(varptr);
+ zend_vm_stack_push(varptr TSRMLS_CC);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
}
if (EX(function_state).function->type == ZEND_INTERNAL_FUNCTION && !ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->op2.opline_num)) {
}
if (IS_CV == IS_VAR && UNEXPECTED(*varptr_ptr == &EG(error_zval))) {
- Z_DELREF_PP(varptr_ptr);
- ALLOC_ZVAL(*varptr_ptr);
- INIT_ZVAL(**varptr_ptr);
- Z_SET_REFCOUNT_PP(varptr_ptr, 0);
+ ALLOC_INIT_ZVAL(varptr);
+ zend_vm_stack_push(varptr TSRMLS_CC);
+ CHECK_EXCEPTION();
+ ZEND_VM_NEXT_OPCODE();
}
if (EX(function_state).function->type == ZEND_INTERNAL_FUNCTION && !ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->op2.opline_num)) {