diff --git a/platform/util/src/com/intellij/util/io/PersistentEnumeratorBase.java b/platform/util/src/com/intellij/util/io/PersistentEnumeratorBase.java index 7171af3788e6..4c0d185d0a8e 100644 --- a/platform/util/src/com/intellij/util/io/PersistentEnumeratorBase.java +++ b/platform/util/src/com/intellij/util/io/PersistentEnumeratorBase.java @@ -454,12 +454,19 @@ public abstract class PersistentEnumeratorBase implements Forceable, Close } public Data valueOf(int idx) throws IOException { - lockStorage(); try { - int addr = indexToAddr(idx); - if (myKeyStorage == null) return ((InlineKeyDescriptor)myDataDescriptor).fromInt(addr); - return myKeyStorage.read(addr, myDataDescriptor); + lockStorage(); + try { + int addr = indexToAddr(idx); + + if (myKeyStorage == null) return ((InlineKeyDescriptor)myDataDescriptor).fromInt(addr); + return myKeyStorage.read(addr, myDataDescriptor); + } + finally { + unlockStorage(); + } + } catch (IOException io) { markCorrupted(); @@ -469,9 +476,6 @@ public abstract class PersistentEnumeratorBase implements Forceable, Close markCorrupted(); throw new RuntimeException(e); } - finally { - unlockStorage(); - } } int reenumerate(Data key) throws IOException {