From 8d8d17767fc6d246c70b8a95ad40d947be4eb464 Mon Sep 17 00:00:00 2001 From: Mihail Muhin Date: Wed, 29 Sep 2010 18:37:06 +0400 Subject: [PATCH] DefaultIdeaErrorLogger - wrap exceptions - exception classes leak fix --- .../intellij/diagnostic/DefaultIdeaErrorLogger.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/diagnostic/DefaultIdeaErrorLogger.java b/platform/platform-impl/src/com/intellij/diagnostic/DefaultIdeaErrorLogger.java index 0cb643701cbc..d0763129a190 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/DefaultIdeaErrorLogger.java +++ b/platform/platform-impl/src/com/intellij/diagnostic/DefaultIdeaErrorLogger.java @@ -51,7 +51,8 @@ public class DefaultIdeaErrorLogger implements ErrorLogger { processOOMError(event); } else if (!ourOomOccured) { - MessagePool.getInstance().addIdeFatalMessage(event); + IdeaLoggingEvent eventToAdd = new IdeaLoggingEvent(event.getMessage(), new ExceptionHolder(event.getThrowable())); + MessagePool.getInstance().addIdeFatalMessage(eventToAdd); } } catch (Exception e) { @@ -76,4 +77,11 @@ public class DefaultIdeaErrorLogger implements ErrorLogger { } }); } + + private class ExceptionHolder extends Throwable { + public ExceptionHolder(Throwable throwable) { + super(throwable.getMessage(), throwable.getCause() == null ? null : new ExceptionHolder(throwable.getCause())); + setStackTrace(throwable.getStackTrace()); + } + } }