Page MenuHomePhabricator

D21173.diff
No OneTemporary

D21173.diff

diff --git a/src/parser/xhpast/api/XHPASTNode.php b/src/parser/xhpast/api/XHPASTNode.php
--- a/src/parser/xhpast/api/XHPASTNode.php
+++ b/src/parser/xhpast/api/XHPASTNode.php
@@ -163,7 +163,26 @@
$re = '/\\\\.|(\$|\{\$|\${)([a-z_\x7F-\xFF][a-z0-9_\x7F-\xFF]*)/i';
$matches = null;
preg_match_all($re, $value, $matches, PREG_OFFSET_CAPTURE);
- return ipull(array_filter($matches[2]), 0, 1);
+
+ // NOTE: The result format for this construction changed in PHP 7.4.
+ // See T13518.
+
+ $names = $matches[2];
+ foreach ($names as $name_idx => $name_match) {
+ if ($name_match === '') {
+ unset($names[$name_idx]);
+ continue;
+ }
+
+ if ($name_match[1] === -1) {
+ unset($names[$name_idx]);
+ continue;
+ }
+ }
+
+ $names = ipull($names, 0, 1);
+
+ return $names;
}
public function getStringLiteralValue() {

File Metadata

Mime Type
text/plain
Expires
Oct 5 2025, 12:38 PM (6 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
9032167
Default Alt Text
D21173.diff (901 B)

Event Timeline