From b24bac5afbd49f4a0424b667b30918040fb51dc6 Mon Sep 17 00:00:00 2001 From: epriestley Date: Fri, 15 May 2020 13:25:52 -0700 Subject: [PATCH] (stable) Fix an out-of-order access issue with inlines Summary: Ref T13513. On `secure`, I caught an issue where inlines may be accessed directly before they're constructed. Instead, access them through the relevant accessor. Test Plan: Will deploy. Maniphest Tasks: T13513 Differential Revision: https://secure.phabricator.com/D21263 --- resources/celerity/map.php | 32 +++++++++---------- .../rsrc/js/application/diff/DiffChangeset.js | 8 +++-- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/resources/celerity/map.php b/resources/celerity/map.php index bc578201f4..68fcf9e951 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -13,7 +13,7 @@ return array( 'core.pkg.js' => '845355f4', 'dark-console.pkg.js' => '187792c2', 'differential.pkg.css' => '42a2334f', - 'differential.pkg.js' => '623b4801', + 'differential.pkg.js' => 'b57da3e7', 'diffusion.pkg.css' => '42c75c37', 'diffusion.pkg.js' => 'a98c0bf7', 'maniphest.pkg.css' => '35995d6d', @@ -379,7 +379,7 @@ return array( 'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => 'a2ab19be', 'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '1e413dc9', 'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => '0116d3e8', - 'rsrc/js/application/diff/DiffChangeset.js' => '68d963eb', + 'rsrc/js/application/diff/DiffChangeset.js' => '0c083409', 'rsrc/js/application/diff/DiffChangesetList.js' => 'ac403c32', 'rsrc/js/application/diff/DiffInline.js' => 'b00168c1', 'rsrc/js/application/diff/DiffPathView.js' => '8207abf9', @@ -774,7 +774,7 @@ return array( 'phabricator-darklog' => '3b869402', 'phabricator-darkmessage' => '26cd4b73', 'phabricator-dashboard-css' => '5a205b9d', - 'phabricator-diff-changeset' => '68d963eb', + 'phabricator-diff-changeset' => '0c083409', 'phabricator-diff-changeset-list' => 'ac403c32', 'phabricator-diff-inline' => 'b00168c1', 'phabricator-diff-path-view' => '8207abf9', @@ -1000,6 +1000,19 @@ return array( 'javelin-dom', 'phabricator-draggable-list', ), + '0c083409' => array( + 'javelin-dom', + 'javelin-util', + 'javelin-stratcom', + 'javelin-install', + 'javelin-workflow', + 'javelin-router', + 'javelin-behavior-device', + 'javelin-vector', + 'phabricator-diff-inline', + 'phabricator-diff-path-view', + 'phuix-button-view', + ), '0cf79f45' => array( 'javelin-behavior', 'javelin-stratcom', @@ -1512,19 +1525,6 @@ return array( 'javelin-install', 'javelin-dom', ), - '68d963eb' => array( - 'javelin-dom', - 'javelin-util', - 'javelin-stratcom', - 'javelin-install', - 'javelin-workflow', - 'javelin-router', - 'javelin-behavior-device', - 'javelin-vector', - 'phabricator-diff-inline', - 'phabricator-diff-path-view', - 'phuix-button-view', - ), '6a1583a8' => array( 'javelin-behavior', 'javelin-history', diff --git a/webroot/rsrc/js/application/diff/DiffChangeset.js b/webroot/rsrc/js/application/diff/DiffChangeset.js index ebb50eb379..70bd92e6bc 100644 --- a/webroot/rsrc/js/application/diff/DiffChangeset.js +++ b/webroot/rsrc/js/application/diff/DiffChangeset.js @@ -795,8 +795,10 @@ JX.install('DiffChangeset', { }, _findInline: function(field, value) { - for (var ii = 0; ii < this._inlines.length; ii++) { - var inline = this._inlines[ii]; + var inlines = this.getInlines(); + + for (var ii = 0; ii < inlines.length; ii++) { + var inline = inlines[ii]; var target; switch (field) { @@ -844,7 +846,7 @@ JX.install('DiffChangeset', { }, redrawFileTree: function() { - var inlines = this._inlines; + var inlines = this.getInlines(); var done = []; var undone = []; var inline;