diff --git a/src/lint/linter/ArcanistCSharpLinter.php b/src/lint/linter/ArcanistCSharpLinter.php --- a/src/lint/linter/ArcanistCSharpLinter.php +++ b/src/lint/linter/ArcanistCSharpLinter.php @@ -195,7 +195,7 @@ protected function resolveFuture(Future $future) { list($stdout) = $future->resolvex(); - $all_results = json_decode($stdout); + $all_results = phutil_json_decode($stdout); foreach ($all_results as $results) { if ($results === null || $results->Issues === null) { return; diff --git a/src/lint/linter/ArcanistJSHintLinter.php b/src/lint/linter/ArcanistJSHintLinter.php --- a/src/lint/linter/ArcanistJSHintLinter.php +++ b/src/lint/linter/ArcanistJSHintLinter.php @@ -132,14 +132,14 @@ } protected function parseLinterOutput($path, $err, $stdout, $stderr) { - $errors = json_decode($stdout, true); - - if (!is_array($errors)) { + $errors = null; + try { + $error = phutil_json_decode($stdout); + } catch (PhutilJSONParserException $ex) { // Something went wrong and we can't decode the output. Exit abnormally. - throw new RuntimeException( - "JSHint returned unparseable output.\n". - "stdout:\n\n{$stdout}". - "stderr:\n\n{$stderr}"); + throw new PhutilProxyException( + pht('JSHint returned unparseable output.'), + $ex); } $messages = array(); diff --git a/src/unit/parser/ArcanistPhpunitTestResultParser.php b/src/unit/parser/ArcanistPhpunitTestResultParser.php --- a/src/unit/parser/ArcanistPhpunitTestResultParser.php +++ b/src/unit/parser/ArcanistPhpunitTestResultParser.php @@ -172,10 +172,7 @@ $json = preg_replace('/}{\s*"/', '},{"', $json); $json = '['.$json.']'; - $json = json_decode($json); - if (!is_array($json)) { - throw new Exception('JSON could not be decoded'); - } + $json = phutil_json_decode($json); return $json; } diff --git a/src/workflow/ArcanistCallConduitWorkflow.php b/src/workflow/ArcanistCallConduitWorkflow.php --- a/src/workflow/ArcanistCallConduitWorkflow.php +++ b/src/workflow/ArcanistCallConduitWorkflow.php @@ -67,8 +67,9 @@ pht('Waiting for JSON parameters on stdin...')); } $params = @file_get_contents('php://stdin'); - $params = json_decode($params, true); - if (!is_array($params)) { + try { + $params = phutil_json_decode($params); + } catch (PhutilJSONParserException $ex) { throw new ArcanistUsageException( pht('Provide method parameters on stdin as a JSON blob.')); }