Page MenuHomePhabricator

D7581.id.diff
No OneTemporary

D7581.id.diff

Index: src/applications/differential/field/specification/DifferentialUnitFieldSpecification.php
===================================================================
--- src/applications/differential/field/specification/DifferentialUnitFieldSpecification.php
+++ 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'])) {
Index: src/infrastructure/markup/PhabricatorMarkupEngine.php
===================================================================
--- src/infrastructure/markup/PhabricatorMarkupEngine.php
+++ 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/plain
Expires
Tue, Oct 22, 8:31 AM (4 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6735732
Default Alt Text
D7581.id.diff (2 KB)

Event Timeline