Skip to content

Commit a92f5cb

Browse files
committed
Use typed property in RegexIterator
1 parent 8c97fc8 commit a92f5cb

File tree

4 files changed

+8
-8
lines changed

4 files changed

+8
-8
lines changed

ext/spl/spl_iterators.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -1884,8 +1884,9 @@ PHP_METHOD(RegexIterator, accept)
18841884
case REGIT_MODE_REPLACE: {
18851885
zval *replacement = zend_read_property(intern->std.ce, Z_OBJ_P(ZEND_THIS), "replacement", sizeof("replacement")-1, 1, &rv);
18861886
zend_string *replacement_str = zval_try_get_string(replacement);
1887+
18871888
if (UNEXPECTED(!replacement_str)) {
1888-
return;
1889+
RETURN_THROWS();
18891890
}
18901891

18911892
result = php_pcre_replace_impl(intern->u.regex.pce, subject, ZSTR_VAL(subject), ZSTR_LEN(subject), replacement_str, -1, &count);

ext/spl/spl_iterators.stub.php

+1-2
Original file line numberDiff line numberDiff line change
@@ -320,8 +320,7 @@ public function next() {}
320320

321321
class RegexIterator extends FilterIterator
322322
{
323-
/** @var string|null */
324-
public $replacement;
323+
public ?string $replacement = null;
325324

326325
public function __construct(Iterator $iterator, string $pattern, int $mode = self::MATCH, int $flags = 0, int $pregFlags = 0) {}
327326

ext/spl/spl_iterators_arginfo.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: a2f4e91b58d1af4954a2665a8fac10a4e0d9e31d */
2+
* Stub hash: faf45a8d4e731dccfc161514f233a78d98b716e9 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_EmptyIterator_current, 0, 0, 0)
55
ZEND_END_ARG_INFO()
@@ -784,7 +784,7 @@ static zend_class_entry *register_class_RegexIterator(zend_class_entry *class_en
784784
zval property_replacement_default_value;
785785
ZVAL_NULL(&property_replacement_default_value);
786786
zend_string *property_replacement_name = zend_string_init("replacement", sizeof("replacement") - 1, 1);
787-
zend_declare_property_ex(class_entry, property_replacement_name, &property_replacement_default_value, ZEND_ACC_PUBLIC, NULL);
787+
zend_declare_typed_property(class_entry, property_replacement_name, &property_replacement_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
788788
zend_string_release(property_replacement_name);
789789

790790
return class_entry;

ext/spl/tests/bug54304.phpt

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ class foo extends ArrayIterator {
1111

1212
$h = new foo;
1313
$i = new RegexIterator($h, '/^test(.*)/', RegexIterator::REPLACE);
14-
$i->replacement = 42;
14+
$i->replacement = "42";
1515
var_dump($i->replacement);
1616
foreach ($i as $name=>$value) {
1717
var_dump($name, $value);
1818
}
1919
var_dump($i->replacement);
2020
?>
2121
--EXPECT--
22-
int(42)
22+
string(2) "42"
2323
string(5) "test3"
2424
string(2) "42"
25-
int(42)
25+
string(2) "42"

0 commit comments

Comments
 (0)