From 4cf749d80a4cff27d5c4bc6c765a840b3d3fd6eb Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 21 Mar 2018 11:42:50 +0100 Subject: [PATCH] [java decompiler] return empty string on I/O errors (EA-102308) Compatible with LoadTextUtil.loadText(). --- .../src/org/jetbrains/java/decompiler/IdeaDecompiler.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/java-decompiler/plugin/src/org/jetbrains/java/decompiler/IdeaDecompiler.kt b/plugins/java-decompiler/plugin/src/org/jetbrains/java/decompiler/IdeaDecompiler.kt index 42358604f61e..bb8d6f69631c 100644 --- a/plugins/java-decompiler/plugin/src/org/jetbrains/java/decompiler/IdeaDecompiler.kt +++ b/plugins/java-decompiler/plugin/src/org/jetbrains/java/decompiler/IdeaDecompiler.kt @@ -9,6 +9,7 @@ import com.intellij.ide.plugins.PluginManagerCore import com.intellij.ide.util.PropertiesComponent import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ex.ApplicationManagerEx +import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.fileEditor.FileEditorManagerListener import com.intellij.openapi.fileTypes.StdFileTypes @@ -29,6 +30,7 @@ import com.intellij.psi.impl.compiled.ClsFileImpl import com.intellij.ui.Gray import com.intellij.ui.components.JBLabel import com.intellij.ui.components.JBPanel +import com.intellij.util.ArrayUtil import com.intellij.util.containers.ContainerUtil import com.intellij.util.ui.JBUI import com.intellij.util.ui.UIUtil @@ -38,6 +40,7 @@ import org.jetbrains.java.decompiler.main.extern.IFernflowerPreferences import org.jetbrains.java.decompiler.main.extern.IResultSaver import java.awt.BorderLayout import java.io.File +import java.io.IOException import java.util.* import java.util.concurrent.Callable import java.util.concurrent.Future @@ -165,6 +168,10 @@ class IdeaDecompiler : ClassFileDecompilers.Light() { throw e } catch (e: Exception) { + if (e is IdeaLogger.InternalException && e.cause is IOException) { + Logger.getInstance(IdeaDecompiler::class.java).warn(file.url, e) + return ArrayUtil.EMPTY_CHAR_SEQUENCE + } if (ApplicationManager.getApplication().isUnitTestMode) { throw AssertionError(file.url, e) }