| From bb2e9a0394a48f4ef3576e8d91607e8129b2b716 Mon Sep 17 00:00:00 2001 |
| From: Nick Desaulniers <ndesaulniers@google.com> |
| Date: Fri, 8 Jul 2022 14:55:46 -0700 |
| Subject: [PATCH] Fix PHP 8.1 incompatibility with `arc patch D<12345>` |
| |
| Fixes the following observed error with PHP 8.1: |
| |
| EXCEPTION: (RuntimeException) preg_match(): Passing null to parameter phacility#2 ($subject) of type string is deprecated at [<arcanist>/src/error/PhutilErrorHandler.php:261] |
| arcanist(head=master, ref.master=acec17af414f) |
| #0 PhutilErrorHandler::handleError(integer, string, string, integer) |
| phacility#1 preg_match(string, NULL, NULL) called at [<arcanist>/src/repository/api/ArcanistGitAPI.php:603] |
| phacility#2 ArcanistGitAPI::getCanonicalRevisionName(NULL) called at [<arcanist>/src/repository/api/ArcanistGitAPI.php:1146] |
| phacility#3 ArcanistGitAPI::hasLocalCommit(NULL) called at [<arcanist>/src/workflow/ArcanistPatchWorkflow.php:433] |
| phacility#4 ArcanistPatchWorkflow::run() called at [<arcanist>/src/workflow/ArcanistPatchWorkflow.php:398] |
| phacility#5 ArcanistPatchWorkflow::run() called at [<arcanist>/scripts/arcanist.php:427] |
| |
| Link: https://secure.phabricator.com/book/phabcontrib/article/contributing_code/ |
| Link: https://reviews.llvm.org/D129232#3634072 |
| Suggested-by: Yuanfang Chen <yuanfang.chen@sony.com> |
| Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> |
| --- |
| src/differential/ArcanistDifferentialDependencyGraph.php | 3 ++- |
| src/lint/linter/ArcanistScriptAndRegexLinter.php | 2 +- |
| src/repository/api/ArcanistGitAPI.php | 3 ++- |
| 3 files changed, 5 insertions(+), 3 deletions(-) |
| |
| diff --git a/src/differential/ArcanistDifferentialDependencyGraph.php b/src/differential/ArcanistDifferentialDependencyGraph.php |
| index 64e2f9c71c20..fbc4e6594f0e 100644 |
| --- a/src/differential/ArcanistDifferentialDependencyGraph.php |
| +++ b/src/differential/ArcanistDifferentialDependencyGraph.php |
| @@ -42,7 +42,8 @@ final class ArcanistDifferentialDependencyGraph extends AbstractDirectedGraph { |
| $edges = array(); |
| foreach ($dependencies as $dependency) { |
| $dependency_revision = $this->getCommitHashFromDict($dependency); |
| - if ($repository_api->hasLocalCommit($dependency_revision)) { |
| + if (phutil_nonempty_string($dependency_revision) && |
| + $repository_api->hasLocalCommit($dependency_revision)) { |
| $edges[$dependency['phid']] = array(); |
| continue; |
| } |
| diff --git a/src/lint/linter/ArcanistScriptAndRegexLinter.php b/src/lint/linter/ArcanistScriptAndRegexLinter.php |
| index 0c3d9d9a11ca..b9f6924ec997 100644 |
| --- a/src/lint/linter/ArcanistScriptAndRegexLinter.php |
| +++ b/src/lint/linter/ArcanistScriptAndRegexLinter.php |
| @@ -338,7 +338,7 @@ final class ArcanistScriptAndRegexLinter extends ArcanistLinter { |
| } |
| |
| $line = idx($match, 'line'); |
| - if (strlen($line)) { |
| + if (phutil_nonempty_string($line) && strlen($line)) { |
| $line = (int)$line; |
| if (!$line) { |
| $line = 1; |
| diff --git a/src/repository/api/ArcanistGitAPI.php b/src/repository/api/ArcanistGitAPI.php |
| index 6c6d2ac42a19..13907d5634be 100644 |
| --- a/src/repository/api/ArcanistGitAPI.php |
| +++ b/src/repository/api/ArcanistGitAPI.php |
| @@ -1143,7 +1143,8 @@ final class ArcanistGitAPI extends ArcanistRepositoryAPI { |
| |
| public function hasLocalCommit($commit) { |
| try { |
| - if (!$this->getCanonicalRevisionName($commit)) { |
| + if (!phutil_nonempty_string($commit) || |
| + !$this->getCanonicalRevisionName($commit)) { |
| return false; |
| } |
| } catch (CommandException $exception) { |
| -- |
| 2.37.0.rc0.161.g10f37bed90-goog |
| |