Page MenuHomePhabricator

D12680.id30510.diff
No OneTemporary

D12680.id30510.diff

diff --git a/scripts/celerity/generate_sprites.php b/scripts/celerity/generate_sprites.php
--- a/scripts/celerity/generate_sprites.php
+++ b/scripts/celerity/generate_sprites.php
@@ -53,7 +53,7 @@
if (!$args->getArg('force')) {
if (Filesystem::pathExists($manifest_path)) {
$data = Filesystem::readFile($manifest_path);
- $data = json_decode($data, true);
+ $data = phutil_json_decode($data, true);
if (!$sheet->needsRegeneration($data)) {
continue;
}
diff --git a/src/applications/conduit/controller/PhabricatorConduitAPIController.php b/src/applications/conduit/controller/PhabricatorConduitAPIController.php
--- a/src/applications/conduit/controller/PhabricatorConduitAPIController.php
+++ b/src/applications/conduit/controller/PhabricatorConduitAPIController.php
@@ -647,12 +647,15 @@
// entire param dictionary JSON encoded.
$params_json = $request->getStr('params');
if (strlen($params_json)) {
- $params = json_decode($params_json, true);
- if (!is_array($params)) {
- throw new Exception(
- "Invalid parameter information was passed to method ".
- "'{$method}', could not decode JSON serialization. Data: ".
- $params_json);
+ $params = null;
+ try {
+ $params = phutil_json_decode($params_json);
+ } catch (PhutilJSONParserException $ex) {
+ throw new PhutilProxyException(
+ pht(
+ "Invalid parameter information was passed to method '%s'",
+ $method),
+ $ex);
}
$metadata = idx($params, '__conduit__', array());
diff --git a/src/applications/conduit/ssh/ConduitSSHWorkflow.php b/src/applications/conduit/ssh/ConduitSSHWorkflow.php
--- a/src/applications/conduit/ssh/ConduitSSHWorkflow.php
+++ b/src/applications/conduit/ssh/ConduitSSHWorkflow.php
@@ -26,13 +26,15 @@
$method = head($methodv);
$json = $this->readAllInput();
- $raw_params = json_decode($json, true);
- if (!is_array($raw_params)) {
- throw new Exception('Invalid JSON input.');
+ $raw_params = null;
+ try {
+ $raw_params = phutil_json_decode($json);
+ } catch (PhutilJSONParserException $ex) {
+ throw new PhutilProxyException(pht('Invalid JSON input.'), $ex);
}
$params = idx($raw_params, 'params', '[]');
- $params = json_decode($params, true);
+ $params = phutil_json_decode($params);
$metadata = idx($params, '__conduit__', array());
unset($params['__conduit__']);
diff --git a/src/applications/console/controller/DarkConsoleDataController.php b/src/applications/console/controller/DarkConsoleDataController.php
--- a/src/applications/console/controller/DarkConsoleDataController.php
+++ b/src/applications/console/controller/DarkConsoleDataController.php
@@ -33,9 +33,9 @@
return new Aphront400Response();
}
- $result = json_decode($result, true);
-
- if (!is_array($result)) {
+ try {
+ $result = phutil_json_decode($result);
+ } catch (PhutilJSONParserException $ex) {
return new Aphront400Response();
}
diff --git a/src/applications/differential/__tests__/DifferentialParseRenderTestCase.php b/src/applications/differential/__tests__/DifferentialParseRenderTestCase.php
--- a/src/applications/differential/__tests__/DifferentialParseRenderTestCase.php
+++ b/src/applications/differential/__tests__/DifferentialParseRenderTestCase.php
@@ -17,9 +17,12 @@
$opt_file = $dir.$file.'.options';
if (Filesystem::pathExists($opt_file)) {
$options = Filesystem::readFile($opt_file);
- $options = json_decode($options, true);
- if (!is_array($options)) {
- throw new Exception("Invalid options file: {$opt_file}.");
+ try {
+ $options = phutil_json_decode($options);
+ } catch (PhutilJSONParserException $ex) {
+ throw new PhutilProxyException(
+ pht('Invalid options file: %s.', $opt_file),
+ $ex);
}
} else {
$options = array();
diff --git a/src/applications/differential/conduit/DifferentialSetDiffPropertyConduitAPIMethod.php b/src/applications/differential/conduit/DifferentialSetDiffPropertyConduitAPIMethod.php
--- a/src/applications/differential/conduit/DifferentialSetDiffPropertyConduitAPIMethod.php
+++ b/src/applications/differential/conduit/DifferentialSetDiffPropertyConduitAPIMethod.php
@@ -86,7 +86,7 @@
protected function execute(ConduitAPIRequest $request) {
$diff_id = $request->getValue('diff_id');
$name = $request->getValue('name');
- $data = json_decode($request->getValue('data'), true);
+ $data = phutil_json_decode($request->getValue('data'));
self::updateDiffProperty($diff_id, $name, $data);
diff --git a/src/applications/diffusion/DiffusionLintSaveRunner.php b/src/applications/diffusion/DiffusionLintSaveRunner.php
--- a/src/applications/diffusion/DiffusionLintSaveRunner.php
+++ b/src/applications/diffusion/DiffusionLintSaveRunner.php
@@ -154,9 +154,11 @@
$files);
foreach (new LinesOfALargeExecFuture($future) as $json) {
- $paths = json_decode($json, true);
- if (!is_array($paths)) {
- fprintf(STDERR, "Invalid JSON: {$json}\n");
+ $paths = null;
+ try {
+ $paths = phutil_json_decode($json);
+ } catch (PhutilJSONParserException $ex) {
+ fprintf(STDERR, pht("Invalid JSON: %s\n", $json));
continue;
}
diff --git a/src/applications/diffusion/controller/DiffusionLastModifiedController.php b/src/applications/diffusion/controller/DiffusionLastModifiedController.php
--- a/src/applications/diffusion/controller/DiffusionLastModifiedController.php
+++ b/src/applications/diffusion/controller/DiffusionLastModifiedController.php
@@ -11,8 +11,9 @@
$viewer = $request->getUser();
$paths = $request->getStr('paths');
- $paths = json_decode($paths, true);
- if (!is_array($paths)) {
+ try {
+ $paths = phutil_json_decode($paths);
+ } catch (PhutilJSONParserException $ex) {
return new Aphront400Response();
}
diff --git a/src/applications/diffusion/ssh/__tests__/DiffusionMercurialWireSSHTestCase.php b/src/applications/diffusion/ssh/__tests__/DiffusionMercurialWireSSHTestCase.php
--- a/src/applications/diffusion/ssh/__tests__/DiffusionMercurialWireSSHTestCase.php
+++ b/src/applications/diffusion/ssh/__tests__/DiffusionMercurialWireSSHTestCase.php
@@ -9,7 +9,7 @@
$raw = Filesystem::readFile($data.$file);
$raw = explode("\n~~~~~~~~~~\n", $raw, 2);
$this->assertEqual(2, count($raw));
- $expect = json_decode($raw[1], true);
+ $expect = phutil_json_decode($raw[1]);
$this->assertTrue(is_array($expect), $file);
$this->assertParserResult($expect, $raw[0], $file);
diff --git a/src/applications/doorkeeper/controller/DoorkeeperTagsController.php b/src/applications/doorkeeper/controller/DoorkeeperTagsController.php
--- a/src/applications/doorkeeper/controller/DoorkeeperTagsController.php
+++ b/src/applications/doorkeeper/controller/DoorkeeperTagsController.php
@@ -7,8 +7,9 @@
$viewer = $request->getUser();
$tags = $request->getStr('tags');
- $tags = json_decode($tags, true);
- if (!is_array($tags)) {
+ try {
+ $tags = phutil_json_decode($tags);
+ } catch (PhutilJSONParserException $ex) {
$tags = array();
}
diff --git a/src/applications/help/controller/PhabricatorHelpKeyboardShortcutController.php b/src/applications/help/controller/PhabricatorHelpKeyboardShortcutController.php
--- a/src/applications/help/controller/PhabricatorHelpKeyboardShortcutController.php
+++ b/src/applications/help/controller/PhabricatorHelpKeyboardShortcutController.php
@@ -12,8 +12,9 @@
$user = $request->getUser();
$keys = $request->getStr('keys');
- $keys = json_decode($keys, true);
- if (!is_array($keys)) {
+ try {
+ $keys = phutil_json_decode($keys);
+ } catch (PhutilJSONParserException $ex) {
return new Aphront400Response();
}
diff --git a/src/applications/herald/adapter/HeraldAdapter.php b/src/applications/herald/adapter/HeraldAdapter.php
--- a/src/applications/herald/adapter/HeraldAdapter.php
+++ b/src/applications/herald/adapter/HeraldAdapter.php
@@ -633,14 +633,16 @@
// dictionary. The first regexp must match the dictionary key, and the
// second regexp must match the dictionary value. If any key/value pair
// in the dictionary matches both regexps, the condition is satisfied.
- $regexp_pair = json_decode($condition_value, true);
- if (!is_array($regexp_pair)) {
+ $regexp_pair = null;
+ try {
+ $regexp_pair = phutil_json_decode($condition_value);
+ } catch (PhutilJSONParserException $ex) {
throw new HeraldInvalidConditionException(
- 'Regular expression pair is not valid JSON!');
+ pht('Regular expression pair is not valid JSON!'));
}
if (count($regexp_pair) != 2) {
throw new HeraldInvalidConditionException(
- 'Regular expression pair is not a pair!');
+ pht('Regular expression pair is not a pair!'));
}
$key_regexp = array_shift($regexp_pair);
@@ -705,8 +707,10 @@
}
break;
case self::CONDITION_REGEXP_PAIR:
- $json = json_decode($condition_value, true);
- if (!is_array($json)) {
+ $json = null;
+ try {
+ $json = phutil_json_decode($condition_value);
+ } catch (PhutilJSONParserException $ex) {
throw new HeraldInvalidConditionException(
pht(
'The regular expression pair "%s" is not valid JSON. Enter a '.
diff --git a/src/applications/herald/controller/HeraldRuleController.php b/src/applications/herald/controller/HeraldRuleController.php
--- a/src/applications/herald/controller/HeraldRuleController.php
+++ b/src/applications/herald/controller/HeraldRuleController.php
@@ -258,7 +258,15 @@
$errors[] = pht('Rule must have a name.');
}
- $data = json_decode($request->getStr('rule'), true);
+ $data = null;
+ try {
+ $data = phutil_json_decode($request->getStr('rule'));
+ } catch (PhutilJSONParserException $ex) {
+ throw new PhutilProxyException(
+ pht('Failed to decode rule data.'),
+ $ex);
+ }
+
if (!is_array($data) ||
!$data['conditions'] ||
!$data['actions']) {
diff --git a/src/applications/maniphest/controller/ManiphestBatchEditController.php b/src/applications/maniphest/controller/ManiphestBatchEditController.php
--- a/src/applications/maniphest/controller/ManiphestBatchEditController.php
+++ b/src/applications/maniphest/controller/ManiphestBatchEditController.php
@@ -47,7 +47,7 @@
$actions = $request->getStr('actions');
if ($actions) {
- $actions = json_decode($actions, true);
+ $actions = phutil_json_decode($actions);
}
if ($request->isFormPost() && is_array($actions)) {
diff --git a/src/applications/maniphest/controller/ManiphestTransactionPreviewController.php b/src/applications/maniphest/controller/ManiphestTransactionPreviewController.php
--- a/src/applications/maniphest/controller/ManiphestTransactionPreviewController.php
+++ b/src/applications/maniphest/controller/ManiphestTransactionPreviewController.php
@@ -74,7 +74,7 @@
break;
case PhabricatorTransactions::TYPE_EDGE:
if ($value) {
- $value = json_decode($value);
+ $value = phutil_json_decode($value);
}
if (!$value) {
$value = array();
diff --git a/src/applications/metamta/adapter/PhabricatorMailImplementationMailgunAdapter.php b/src/applications/metamta/adapter/PhabricatorMailImplementationMailgunAdapter.php
--- a/src/applications/metamta/adapter/PhabricatorMailImplementationMailgunAdapter.php
+++ b/src/applications/metamta/adapter/PhabricatorMailImplementationMailgunAdapter.php
@@ -120,9 +120,13 @@
list($body) = $future->resolvex();
- $response = json_decode($body, true);
- if (!is_array($response)) {
- throw new Exception("Failed to JSON decode response: {$body}");
+ $response = null;
+ try {
+ $response = phutil_json_decode($body);
+ } catch (PhutilJSONParserException $ex) {
+ throw new PhutilProxyException(
+ pht('Failed to JSON decode response.'),
+ $ex);
}
if (!idx($response, 'id')) {
diff --git a/src/applications/metamta/contentsource/PhabricatorContentSource.php b/src/applications/metamta/contentsource/PhabricatorContentSource.php
--- a/src/applications/metamta/contentsource/PhabricatorContentSource.php
+++ b/src/applications/metamta/contentsource/PhabricatorContentSource.php
@@ -32,7 +32,7 @@
}
public static function newFromSerialized($serialized) {
- $dict = json_decode($serialized, true);
+ $dict = phutil_json_decode($serialized);
if (!is_array($dict)) {
$dict = array();
}
diff --git a/src/applications/phame/skins/PhameSkinSpecification.php b/src/applications/phame/skins/PhameSkinSpecification.php
--- a/src/applications/phame/skins/PhameSkinSpecification.php
+++ b/src/applications/phame/skins/PhameSkinSpecification.php
@@ -93,15 +93,18 @@
}
private static function loadSkinSpecification($path) {
-
$config_path = $path.DIRECTORY_SEPARATOR.'skin.json';
$config = array();
if (Filesystem::pathExists($config_path)) {
$config = Filesystem::readFile($config_path);
- $config = json_decode($config, true);
- if (!is_array($config)) {
- throw new Exception(
- "Skin configuration file '{$config_path}' is not a valid JSON file.");
+ try {
+ $config = phutil_json_decode($config);
+ } catch (PhutilJSONParserException $ex) {
+ throw new PhutilProxyException(
+ pht(
+ "Skin configuration file '%s' is not a valid JSON file.",
+ $config_path),
+ $ex);
}
$type = idx($config, 'type', self::TYPE_BASIC);
} else {
diff --git a/src/applications/phlux/controller/PhluxEditController.php b/src/applications/phlux/controller/PhluxEditController.php
--- a/src/applications/phlux/controller/PhluxEditController.php
+++ b/src/applications/phlux/controller/PhluxEditController.php
@@ -58,7 +58,7 @@
}
$raw_value = $request->getStr('value');
- $value = json_decode($raw_value, true);
+ $value = phutil_json_decode($raw_value);
if ($value === null && strtolower($raw_value) !== 'null') {
$e_value = pht('Invalid');
$errors[] = pht('Variable value must be valid JSON.');
diff --git a/src/applications/phortune/controller/PhortunePaymentMethodCreateController.php b/src/applications/phortune/controller/PhortunePaymentMethodCreateController.php
--- a/src/applications/phortune/controller/PhortunePaymentMethodCreateController.php
+++ b/src/applications/phortune/controller/PhortunePaymentMethodCreateController.php
@@ -94,20 +94,23 @@
if (!$errors) {
$client_token_raw = $request->getStr('token');
- $client_token = json_decode($client_token_raw, true);
- if (!is_array($client_token)) {
+ $client_token = null;
+ try {
+ $client_token = phutil_json_decode($client_token_raw);
+ } catch (PhutilJSONParserException $ex) {
$errors[] = pht(
'There was an error decoding token information submitted by the '.
'client. Expected a JSON-encoded token dictionary, received: %s.',
nonempty($client_token_raw, pht('nothing')));
- } else {
- if (!$provider->validateCreatePaymentMethodToken($client_token)) {
- $errors[] = pht(
- 'There was an error with the payment token submitted by the '.
- 'client. Expected a valid dictionary, received: %s.',
- $client_token_raw);
- }
}
+
+ if (!$provider->validateCreatePaymentMethodToken($client_token)) {
+ $errors[] = pht(
+ 'There was an error with the payment token submitted by the '.
+ 'client. Expected a valid dictionary, received: %s.',
+ $client_token_raw);
+ }
+
if (!$errors) {
$errors = $provider->createPaymentMethodFromRequest(
$request,
@@ -215,8 +218,10 @@
$errors = array();
- $client_errors = json_decode($client_errors_raw, true);
- if (!is_array($client_errors)) {
+ $client_errors = null;
+ try {
+ $client_errors = phutil_json_decode($client_errors_raw);
+ } catch (PhutilJSONParserException $ex) {
$errors[] = pht(
'There was an error decoding error information submitted by the '.
'client. Expected a JSON-encoded list of error codes, received: %s.',
diff --git a/src/applications/policy/controller/PhabricatorPolicyEditController.php b/src/applications/policy/controller/PhabricatorPolicyEditController.php
--- a/src/applications/policy/controller/PhabricatorPolicyEditController.php
+++ b/src/applications/policy/controller/PhabricatorPolicyEditController.php
@@ -52,9 +52,12 @@
$errors = array();
if ($request->isFormPost()) {
$data = $request->getStr('rules');
- $data = @json_decode($data, true);
- if (!is_array($data)) {
- throw new Exception('Failed to JSON decode rule data!');
+ try {
+ $data = phutil_json_decode($data);
+ } catch (PhutilJSONParserException $ex) {
+ throw new PhutilProxyException(
+ pht('Failed to JSON decode rule data!'),
+ $ex);
}
$rule_data = array();
diff --git a/src/applications/releeph/differential/DifferentialReleephRequestFieldSpecification.php b/src/applications/releeph/differential/DifferentialReleephRequestFieldSpecification.php
--- a/src/applications/releeph/differential/DifferentialReleephRequestFieldSpecification.php
+++ b/src/applications/releeph/differential/DifferentialReleephRequestFieldSpecification.php
@@ -39,7 +39,7 @@
public function setValueFromStorage($json) {
if ($json) {
- $dict = json_decode($json, true);
+ $dict = phutil_json_decode($json);
$this->releephAction = idx($dict, 'releephAction');
$this->releephPHIDs = idx($dict, 'releephPHIDs');
}
diff --git a/src/applications/search/engine/PhabricatorElasticSearchEngine.php b/src/applications/search/engine/PhabricatorElasticSearchEngine.php
--- a/src/applications/search/engine/PhabricatorElasticSearchEngine.php
+++ b/src/applications/search/engine/PhabricatorElasticSearchEngine.php
@@ -397,12 +397,13 @@
return null;
}
- $body = json_decode($body, true);
- if (!is_array($body)) {
- throw new Exception('elasticsearch server returned invalid JSON!');
+ try {
+ return phutil_json_decode($body);
+ } catch (PhutilJSONParserException $ex) {
+ throw new PhutilProxyException(
+ pht('ElasticSearch server returned invalid JSON!'),
+ $ex);
}
-
- return $body;
}
}
diff --git a/src/applications/xhprof/controller/PhabricatorXHProfProfileController.php b/src/applications/xhprof/controller/PhabricatorXHProfProfileController.php
--- a/src/applications/xhprof/controller/PhabricatorXHProfProfileController.php
+++ b/src/applications/xhprof/controller/PhabricatorXHProfProfileController.php
@@ -21,9 +21,12 @@
}
$data = $file->loadFileData();
- $data = @json_decode($data, true);
- if (!$data) {
- throw new Exception('Failed to unserialize XHProf profile!');
+ try {
+ $data = phutil_json_decode($data);
+ } catch (PhutilJSONParserException $ex) {
+ throw new PhutilProxyException(
+ pht('Failed to unserialize XHProf profile!'),
+ $ex);
}
$symbol = $request->getStr('symbol');
diff --git a/src/infrastructure/customfield/config/PhabricatorCustomFieldConfigOptionType.php b/src/infrastructure/customfield/config/PhabricatorCustomFieldConfigOptionType.php
--- a/src/infrastructure/customfield/config/PhabricatorCustomFieldConfigOptionType.php
+++ b/src/infrastructure/customfield/config/PhabricatorCustomFieldConfigOptionType.php
@@ -11,7 +11,7 @@
$errors = array();
$storage_value = $request->getStr('value');
- $in_value = json_decode($storage_value, true);
+ $in_value = phutil_json_decode($storage_value);
if (!is_array($in_value)) {
$in_value = array();
}
diff --git a/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldPHIDs.php b/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldPHIDs.php
--- a/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldPHIDs.php
+++ b/src/infrastructure/customfield/standard/PhabricatorStandardCustomFieldPHIDs.php
@@ -124,7 +124,7 @@
$old = array();
}
- $new = json_decode($xaction->getNewValue());
+ $new = phutil_json_decode($xaction->getNewValue());
if (!is_array($new)) {
$new = array();
}
diff --git a/src/infrastructure/daemon/bot/PhabricatorBot.php b/src/infrastructure/daemon/bot/PhabricatorBot.php
--- a/src/infrastructure/daemon/bot/PhabricatorBot.php
+++ b/src/infrastructure/daemon/bot/PhabricatorBot.php
@@ -23,9 +23,12 @@
}
$json_raw = Filesystem::readFile($argv[0]);
- $config = json_decode($json_raw, true);
- if (!is_array($config)) {
- throw new Exception("File '{$argv[0]}' is not valid JSON!");
+ try {
+ $config = phutil_json_decode($json_raw);
+ } catch (PhutilJSONParserException $ex) {
+ throw new PhutilProxyException(
+ pht("File '%s' is not valid JSON!", $argv[0]),
+ $ex);
}
$nick = idx($config, 'nick', 'phabot');
diff --git a/src/infrastructure/daemon/bot/adapter/PhabricatorBotBaseStreamingProtocolAdapter.php b/src/infrastructure/daemon/bot/adapter/PhabricatorBotBaseStreamingProtocolAdapter.php
--- a/src/infrastructure/daemon/bot/adapter/PhabricatorBotBaseStreamingProtocolAdapter.php
+++ b/src/infrastructure/daemon/bot/adapter/PhabricatorBotBaseStreamingProtocolAdapter.php
@@ -149,7 +149,7 @@
$output = trim($output);
if (strlen($output)) {
- return json_decode($output, true);
+ return phutil_json_decode($output);
}
return true;
diff --git a/src/infrastructure/daemon/workers/query/PhabricatorWorkerLeaseQuery.php b/src/infrastructure/daemon/workers/query/PhabricatorWorkerLeaseQuery.php
--- a/src/infrastructure/daemon/workers/query/PhabricatorWorkerLeaseQuery.php
+++ b/src/infrastructure/daemon/workers/query/PhabricatorWorkerLeaseQuery.php
@@ -191,7 +191,7 @@
foreach ($data as $row) {
$tasks[$row['id']]->setServerTime($row['_serverTime']);
if ($row['_taskData']) {
- $task_data = json_decode($row['_taskData'], true);
+ $task_data = phutil_json_decode($row['_taskData']);
} else {
$task_data = null;
}
diff --git a/src/infrastructure/edges/query/PhabricatorEdgeQuery.php b/src/infrastructure/edges/query/PhabricatorEdgeQuery.php
--- a/src/infrastructure/edges/query/PhabricatorEdgeQuery.php
+++ b/src/infrastructure/edges/query/PhabricatorEdgeQuery.php
@@ -201,7 +201,7 @@
$data_ids);
foreach ($data_rows as $row) {
$data_map[$row['id']] = idx(
- json_decode($row['data'], true),
+ phutil_json_decode($row['data']),
'data');
}
}
diff --git a/src/infrastructure/env/PhabricatorConfigLocalSource.php b/src/infrastructure/env/PhabricatorConfigLocalSource.php
--- a/src/infrastructure/env/PhabricatorConfigLocalSource.php
+++ b/src/infrastructure/env/PhabricatorConfigLocalSource.php
@@ -25,9 +25,10 @@
if (@file_exists($path)) {
$data = @file_get_contents($path);
if ($data) {
- $data = json_decode($data, true);
- if (is_array($data)) {
- return $data;
+ try {
+ return phutil_json_decode($data);
+ } catch (PhutilJSONParserException $ex) {
+ return array();
}
}
}
diff --git a/src/infrastructure/storage/lisk/LiskDAO.php b/src/infrastructure/storage/lisk/LiskDAO.php
--- a/src/infrastructure/storage/lisk/LiskDAO.php
+++ b/src/infrastructure/storage/lisk/LiskDAO.php
@@ -1637,7 +1637,7 @@
break;
case self::SERIALIZATION_JSON:
if ($deserialize) {
- $data[$col] = json_decode($data[$col], true);
+ $data[$col] = phutil_json_decode($data[$col]);
} else {
$data[$col] = json_encode($data[$col]);
}
diff --git a/src/view/phui/PHUIIconView.php b/src/view/phui/PHUIIconView.php
--- a/src/view/phui/PHUIIconView.php
+++ b/src/view/phui/PHUIIconView.php
@@ -106,7 +106,7 @@
$root = dirname(phutil_get_library_root('phabricator'));
$path = $root.'/resources/sprite/manifest/'.$sheet.'.json';
$data = Filesystem::readFile($path);
- return idx(json_decode($data, true), 'sprites');
+ return idx(phutil_json_decode($data), 'sprites');
}
public static function getFontIcons() {

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 25, 3:56 AM (9 h, 59 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7046482
Default Alt Text
D12680.id30510.diff (24 KB)

Event Timeline