Page MenuHomePhabricator

D7581.diff

diff --git a/src/applications/differential/field/specification/DifferentialUnitFieldSpecification.php b/src/applications/differential/field/specification/DifferentialUnitFieldSpecification.php
--- a/src/applications/differential/field/specification/DifferentialUnitFieldSpecification.php
+++ b/src/applications/differential/field/specification/DifferentialUnitFieldSpecification.php
@@ -70,8 +70,24 @@
$udata[$key]['sort'] = idx($sort_map, idx($test, 'result'));
}
$udata = isort($udata, 'sort');
-
- foreach ($udata as $test) {
+ $engine = new PhabricatorMarkupEngine();
+ $engine->setViewer($this->getUser());
+ $markup_objects = array();
+ foreach ($udata as $key => $test) {
+ $userdata = idx($test, 'userdata');
+ if ($userdata) {
+ if ($userdata !== false) {
+ $userdata = str_replace("\000", '', $userdata);
+ }
+ $markup_object = id(new PhabricatorMarkupOneOff())
+ ->setContent($userdata)
+ ->setPreserveLinebreaks(true);
+ $engine->addObject($markup_object, 'default');
+ $markup_objects[$key] = $markup_object;
+ }
+ }
+ $engine->process();
+ foreach ($udata as $key => $test) {
$result = idx($test, 'result');
$default_hide = false;
@@ -110,17 +126,10 @@
'show' => $show,
);
- $userdata = idx($test, 'userdata');
- if ($userdata) {
- if ($userdata !== false) {
- $userdata = str_replace("\000", '', $userdata);
- }
- $engine = PhabricatorMarkupEngine::newDifferentialMarkupEngine();
- $engine->setConfig('viewer', $this->getUser());
- $userdata = $engine->markupText($userdata);
+ if (isset($markup_objects[$key])) {
$rows[] = array(
'style' => 'details',
- 'value' => $userdata,
+ 'value' => $engine->getOutput($markup_objects[$key], 'default'),
'show' => false,
);
if (empty($hidden['details'])) {
diff --git a/src/infrastructure/markup/PhabricatorMarkupEngine.php b/src/infrastructure/markup/PhabricatorMarkupEngine.php
--- a/src/infrastructure/markup/PhabricatorMarkupEngine.php
+++ b/src/infrastructure/markup/PhabricatorMarkupEngine.php
@@ -242,7 +242,9 @@
}
foreach ($objects as $key => $info) {
- if (isset($blocks[$key])) {
+ // False check in case MySQL doesn't support unicode characters
+ // in the string (T1191), resulting in unserialize returning false.
+ if (isset($blocks[$key]) && $blocks[$key]->getCacheData() !== false) {
// If we already have a preprocessing cache, we don't need to rebuild
// it.
continue;

File Metadata

Mime Type
text/x-diff
Storage Engine
amazon-s3
Storage Format
Raw Data
Storage Handle
phabricator/4q/sw/bd3meho63ga33b6w
Default Alt Text
D7581.diff (2 KB)

Event Timeline