summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/tests/array_offset.phpt21
-rw-r--r--Zend/zend_execute.c4
2 files changed, 23 insertions, 2 deletions
diff --git a/Zend/tests/array_offset.phpt b/Zend/tests/array_offset.phpt
new file mode 100644
index 0000000000..76c25f9298
--- /dev/null
+++ b/Zend/tests/array_offset.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Ensure "undefined offset" notice formats message corectly when undefined key is negative
+--FILE--
+<?php
+
+[][-1];
+[][-1.1];
+(new ArrayObject)[-1];
+(new ArrayObject)[-1.1];
+
+echo "Done\n";
+?>
+--EXPECTF--
+Notice: Undefined offset: -1 in %s on line 3
+
+Notice: Undefined offset: -1 in %s on line 4
+
+Notice: Undefined offset: -1 in %s on line 5
+
+Notice: Undefined offset: -1 in %s on line 6
+Done
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 40868f0dc8..386ddf3989 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1438,14 +1438,14 @@ num_index:
if (retval == NULL) {
switch (type) {
case BP_VAR_R:
- zend_error(E_NOTICE,"Undefined offset: " ZEND_ULONG_FMT, hval);
+ zend_error(E_NOTICE,"Undefined offset: " ZEND_LONG_FMT, hval);
/* break missing intentionally */
case BP_VAR_UNSET:
case BP_VAR_IS:
retval = &EG(uninitialized_zval);
break;
case BP_VAR_RW:
- zend_error(E_NOTICE,"Undefined offset: " ZEND_ULONG_FMT, hval);
+ zend_error(E_NOTICE,"Undefined offset: " ZEND_LONG_FMT, hval);
/* break missing intentionally */
case BP_VAR_W:
retval = zend_hash_index_add_new(ht, hval, &EG(uninitialized_zval));