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; }