mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-24 14:30:56 +01:00
don't throw BadMethodCallException on diffs that add images
Summary: I don't know if there is something more sinister going on under the covers, but we have a couple of diffs that trigger: Unhandled Exception ("BadMethodCallException") Call to a member function getMetadata() on a non-object when the diff page is handling its async render calls. One diff in particular has multiple image adds and thus has a stack of of these error dialogs to close. This isn't a new regression, we just haven't gotten around to debugging it until now (reported on 6/12) One revision that triggers it has two diffs. If I show Base -> Diff 1 I don't hit the error. When I select Base -> Diff 2, or Diff 1 -> Diff 2, the error triggers. I don't understand what this means, but this diff avoids the null object reference that causes the exception. Test Plan: Load the offending diff, don't hit the error. The diff loads the images that were added Reviewers: epriestley Reviewed By: epriestley CC: Korvin, aran Differential Revision: https://secure.phabricator.com/D6851
This commit is contained in:
parent
34356c7154
commit
11f1268e99
1 changed files with 12 additions and 4 deletions
|
@ -825,12 +825,20 @@ final class DifferentialChangesetParser {
|
||||||
$new_phid = idx($metadata, 'new:binary-phid');
|
$new_phid = idx($metadata, 'new:binary-phid');
|
||||||
} else {
|
} else {
|
||||||
$vs_changeset = id(new DifferentialChangeset())->load($vs);
|
$vs_changeset = id(new DifferentialChangeset())->load($vs);
|
||||||
$vs_metadata = $vs_changeset->getMetadata();
|
$old_phid = null;
|
||||||
$old_phid = idx($vs_metadata, 'new:binary-phid');
|
$new_phid = null;
|
||||||
|
|
||||||
|
// TODO: This is spooky, see D6851
|
||||||
|
if ($vs_changeset) {
|
||||||
|
$vs_metadata = $vs_changeset->getMetadata();
|
||||||
|
$old_phid = idx($vs_metadata, 'new:binary-phid');
|
||||||
|
}
|
||||||
|
|
||||||
$changeset = id(new DifferentialChangeset())->load($id);
|
$changeset = id(new DifferentialChangeset())->load($id);
|
||||||
$metadata = $changeset->getMetadata();
|
if ($changeset) {
|
||||||
$new_phid = idx($metadata, 'new:binary-phid');
|
$metadata = $changeset->getMetadata();
|
||||||
|
$new_phid = idx($metadata, 'new:binary-phid');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($old_phid || $new_phid) {
|
if ($old_phid || $new_phid) {
|
||||||
|
|
Loading…
Reference in a new issue