Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/view/widget/AphrontStackTraceView.php b/src/view/widget/AphrontStackTraceView.php
index 15b39be878..263e6e0d74 100644
--- a/src/view/widget/AphrontStackTraceView.php
+++ b/src/view/widget/AphrontStackTraceView.php
@@ -1,106 +1,108 @@
<?php
final class AphrontStackTraceView extends AphrontView {
private $trace;
public function setTrace($trace) {
$this->trace = $trace;
return $this;
}
public function render() {
$trace = $this->trace;
$libraries = PhutilBootloader::getInstance()->getAllLibraries();
// TODO: Make this configurable?
$path = 'https://we.phorge.it/diffusion/%s/browse/master/src/';
$callsigns = array(
'arcanist' => 'ARC',
'phabricator' => 'P',
);
$rows = array();
$depth = count($trace);
foreach ($trace as $part) {
$lib = null;
$file = idx($part, 'file');
- $relative = $file;
- foreach ($libraries as $library) {
- $root = phutil_get_library_root($library);
- if (Filesystem::isDescendant($file, $root)) {
- $lib = $library;
- $relative = Filesystem::readablePath($file, $root);
- break;
+ if ($file !== null && $file !== '') {
+ $relative = $file;
+ foreach ($libraries as $library) {
+ $root = phutil_get_library_root($library);
+ if (Filesystem::isDescendant($file, $root)) {
+ $lib = $library;
+ $relative = Filesystem::readablePath($file, $root);
+ break;
+ }
}
}
$where = '';
if (isset($part['class'])) {
$where .= $part['class'].'::';
}
if (isset($part['function'])) {
$where .= $part['function'].'()';
}
if ($file) {
if (isset($callsigns[$lib])) {
$attrs = array('title' => $file);
if (empty($attrs['href'])) {
$attrs['href'] = sprintf($path, $callsigns[$lib]).
str_replace(DIRECTORY_SEPARATOR, '/', $relative).
'$'.$part['line'];
$attrs['target'] = '_blank';
}
$file_name = phutil_tag(
'a',
$attrs,
$relative);
} else {
$file_name = phutil_tag(
'span',
array(
'title' => $file,
),
$relative);
}
$file_name = hsprintf('%s : %d', $file_name, $part['line']);
} else {
$file_name = phutil_tag('em', array(), '(Internal)');
}
$rows[] = array(
$depth--,
$lib,
$file_name,
$where,
);
}
$table = new AphrontTableView($rows);
$table->setHeaders(
array(
pht('Depth'),
pht('Library'),
pht('File'),
pht('Where'),
));
$table->setColumnClasses(
array(
'n',
'',
'',
'wide',
));
return phutil_tag(
'div',
array(
'class' => 'exception-trace',
),
$table->render());
}
}

File Metadata

Mime Type
text/x-diff
Expires
Mon, Nov 25, 1:09 AM (1 d, 18 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1136
Default Alt Text
(3 KB)

Event Timeline