From 7128dfc17c28d33b683d5fc68fcd88adbcc10df9 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 11 Apr 2016 19:03:46 +0300 Subject: [PATCH] comment --- .../com/intellij/openapi/application/impl/ApplicationImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java b/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java index e199519f278e..18c7c8e30a69 100644 --- a/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java @@ -1144,7 +1144,8 @@ public class ApplicationImpl extends PlatformComponentManagerImpl implements App private void endWrite(/*@NotNull*/ Class clazz) { try { fireWriteActionFinished(clazz); - // after fireWriteActionFinished() in case somebody starts write action there + // fire listeners before popping stack because if somebody starts write action in a listener, + // there is a danger of unlocking the write lock before other listeners have been run (since write lock became non-reentrant). myWriteActionsStack.pop(); if (gatherWriteActionStatistics && myWriteActionsStack.isEmpty() && !myWriteActionPending) { writePauses.finished("write action ("+clazz+")");