Skip to content

Commit ca7a11c

Browse files
committed
Consolidate string offset by reference errors
Use the same error message for all scenarios where a reference to a string offset is acquired.
1 parent a582013 commit ca7a11c

File tree

4 files changed

+19
-15
lines changed

4 files changed

+19
-15
lines changed

Zend/tests/bug70089.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ try {
3131
--EXPECT--
3232
string(36) "Cannot use string offset as an array"
3333
string(27) "Cannot unset string offsets"
34-
string(41) "Only variables can be passed by reference"
34+
string(47) "Cannot create references to/from string offsets"
3535
string(41) "Cannot increment/decrement string offsets"

Zend/tests/bug73792.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ echo 'done';
1414
--EXPECTF--
1515
Warning: Illegal string offset "2bbb" in %s on line %d
1616

17-
Fatal error: Uncaught Error: Cannot iterate on string offsets by reference in %sbug73792.php:4
17+
Fatal error: Uncaught Error: Cannot create references to/from string offsets in %s:%d
1818
Stack trace:
1919
#0 {main}
2020
thrown in %sbug73792.php on line 4

Zend/tests/string_offset_errors.phpt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ function &test() : string {
88
return $str[0];
99
}
1010

11+
function &gen() {
12+
$str = "foo";
13+
yield $str[0];
14+
}
15+
1116
try {
1217
test();
1318
} catch (Error $e) {
@@ -21,7 +26,14 @@ try {
2126
echo $e->getMessage(), "\n";
2227
}
2328

29+
try {
30+
foreach (gen() as $v) {}
31+
} catch (Error $e) {
32+
echo $e->getMessage(), "\n";
33+
}
34+
2435
?>
2536
--EXPECT--
26-
Cannot return string offsets by reference
37+
Cannot create references to/from string offsets
38+
Cannot create references to/from string offsets
2739
Cannot create references to/from string offsets

Zend/zend_execute.c

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1585,25 +1585,17 @@ ZEND_API ZEND_COLD void zend_wrong_string_offset_error(void)
15851585
case ZEND_ADD_ARRAY_ELEMENT:
15861586
case ZEND_INIT_ARRAY:
15871587
case ZEND_MAKE_REF:
1588-
msg = "Cannot create references to/from string offsets";
1589-
break;
15901588
case ZEND_RETURN_BY_REF:
15911589
case ZEND_VERIFY_RETURN_TYPE:
1592-
msg = "Cannot return string offsets by reference";
1593-
break;
1594-
case ZEND_UNSET_DIM:
1595-
msg = "Cannot unset string offsets";
1596-
break;
15971590
case ZEND_YIELD:
1598-
msg = "Cannot yield string offsets by reference";
1599-
break;
16001591
case ZEND_SEND_REF:
16011592
case ZEND_SEND_VAR_EX:
16021593
case ZEND_SEND_FUNC_ARG:
1603-
msg = "Only variables can be passed by reference";
1604-
break;
16051594
case ZEND_FE_RESET_RW:
1606-
msg = "Cannot iterate on string offsets by reference";
1595+
msg = "Cannot create references to/from string offsets";
1596+
break;
1597+
case ZEND_UNSET_DIM:
1598+
msg = "Cannot unset string offsets";
16071599
break;
16081600
EMPTY_SWITCH_DEFAULT_CASE();
16091601
}

0 commit comments

Comments
 (0)