Skip to content

Commit

Permalink
Restores the leniency of the matches twig comparison, allowing null…
Browse files Browse the repository at this point in the history
… subject to result in a non-match.

Resolves BC break introduced in PR twigphp#3687

As per pattern in twigphp#3617
  • Loading branch information
la5942 committed Feb 7, 2023
1 parent b3bdf6a commit f136668
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/Extension/CoreExtension.php
Expand Up @@ -1021,19 +1021,19 @@ function twig_compare($a, $b)

/**
* @param string $pattern
* @param string $subject
* @param string|null $subject
*
* @return int
*
* @throws RuntimeError When an invalid pattern is used
*/
function twig_matches(string $regexp, string $str)
function twig_matches(string $regexp, ?string $str)
{
set_error_handler(function ($t, $m) use ($regexp) {
throw new RuntimeError(sprintf('Regexp "%s" passed to "matches" is not valid', $regexp).substr($m, 12));
});
try {
return preg_match($regexp, $str);
return preg_match($regexp, $str ?? '');
} finally {
restore_error_handler();
}
Expand Down
2 changes: 2 additions & 0 deletions tests/Fixtures/expressions/matches.test
Expand Up @@ -4,9 +4,11 @@ Twig supports the "matches" operator
{{ 'foo' matches '/o/' ? 'OK' : 'KO' }}
{{ 'foo' matches '/^fo/' ? 'OK' : 'KO' }}
{{ 'foo' matches '/O/i' ? 'OK' : 'KO' }}
{{ null matches '/o/' }}
--DATA--
return []
--EXPECT--
OK
OK
OK
0

0 comments on commit f136668

Please sign in to comment.