Skip to content

Commit aba6b89

Browse files
committed
Merge branch 'PHP-8.4'
* PHP-8.4: Coerce numeric string keys from iterators when argument unpacking
2 parents 5b8ee00 + 4bc5aa3 commit aba6b89

File tree

3 files changed

+42
-0
lines changed

3 files changed

+42
-0
lines changed

Zend/tests/gh18581.phpt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
--TEST--
2+
GH-18581: Coerce numeric string keys from iterators when argument unpacking
3+
--FILE--
4+
<?php
5+
6+
function g() {
7+
yield '100' => 'first';
8+
yield '101' => 'second';
9+
yield '102' => 'third';
10+
yield 'named' => 'fourth';
11+
}
12+
13+
function test($x = null, $y = null, ...$z) {
14+
var_dump($x, $y, $z);
15+
var_dump($z[0]);
16+
var_dump($z['named']);
17+
}
18+
19+
test(...g());
20+
21+
?>
22+
--EXPECT--
23+
string(5) "first"
24+
string(6) "second"
25+
array(2) {
26+
[0]=>
27+
string(5) "third"
28+
["named"]=>
29+
string(6) "fourth"
30+
}
31+
string(5) "third"
32+
string(6) "fourth"

Zend/zend_vm_def.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5392,6 +5392,11 @@ ZEND_VM_C_LABEL(send_again):
53925392
}
53935393

53945394
name = Z_STR_P(&key);
5395+
5396+
zend_ulong tmp;
5397+
if (ZEND_HANDLE_NUMERIC(name, tmp)) {
5398+
name = NULL;
5399+
}
53955400
}
53965401
}
53975402

Zend/zend_vm_execute.h

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)