From fb989a963c2146a01e0d67af69d4dd42b92f5340 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Thu, 30 Jun 2016 16:06:07 +0300 Subject: [PATCH] EA-85204 - TDDE: TraceableDisposable.throwDisposalError --- .../openapi/fileEditor/impl/EditorHistoryManager.java | 4 +++- .../com/intellij/openapi/fileEditor/impl/HistoryEntry.java | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorHistoryManager.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorHistoryManager.java index be146f687077..6de286c7352f 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorHistoryManager.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorHistoryManager.java @@ -137,8 +137,10 @@ public final class EditorHistoryManager implements PersistentStateComponent= 0; i--) { final FileEditorProvider provider = oldProviders [i]; LOG.assertTrue(provider != null); + FileEditor editor = editors[i]; + if (!editor.isValid()) continue; providers[i] = provider; - states[i] = editors[i].getState(FileEditorStateLevel.FULL); + states[i] = editor.getState(FileEditorStateLevel.FULL); } addEntry(HistoryEntry.createHeavy(myProject, file, providers, states, providers[selectedProviderIndex])); trimToSize(); diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/HistoryEntry.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/HistoryEntry.java index 46eff670c26b..bde37044c2be 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/HistoryEntry.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/HistoryEntry.java @@ -105,7 +105,11 @@ final class HistoryEntry { HistoryEntry entry = new HistoryEntry(pointer, selectedProvider, disposable); for (int i = 0; i < providers.length; i++) { - entry.putState(providers[i], states[i]); + FileEditorProvider provider = providers[i]; + FileEditorState state = states[i]; + if (provider != null && state != null) { + entry.putState(provider, state); + } } return entry; }