From 9527dfb05b662d77a86fd8af4fa350671702fd2e Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Wed, 28 Oct 2015 11:22:13 +0100 Subject: [PATCH] access class sun.nio.ch.DirectBuffer in priveledged action, attempt to avoid (IDEA-146944 Internal error trying to build a java 9 project ) (cherry picked from commit 68ce925) --- .../com/intellij/util/io/DirectBufferWrapper.java | 12 +++++++----- .../com/intellij/util/io/MappedBufferWrapper.java | 3 +-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/platform/util/src/com/intellij/util/io/DirectBufferWrapper.java b/platform/util/src/com/intellij/util/io/DirectBufferWrapper.java index c61b8e377255..f99218473015 100644 --- a/platform/util/src/com/intellij/util/io/DirectBufferWrapper.java +++ b/platform/util/src/com/intellij/util/io/DirectBufferWrapper.java @@ -54,21 +54,23 @@ public abstract class DirectBufferWrapper extends ByteBufferWrapper { @Override public void unmap() { if (isDirty()) flush(); - if (myBuffer != null) disposeDirectBuffer((DirectBuffer)myBuffer); + if (myBuffer != null) disposeDirectBuffer(myBuffer); myBuffer = null; } - static boolean disposeDirectBuffer(final DirectBuffer buffer) { + static boolean disposeDirectBuffer(final ByteBuffer buffer) { return AccessController.doPrivileged(new PrivilegedAction() { @Override @Nullable public Object run() { try { - Cleaner cleaner = buffer.cleaner(); - if (cleaner != null) cleaner.clean(); // Already cleaned otherwise + if (buffer instanceof DirectBuffer) { + Cleaner cleaner = ((DirectBuffer)buffer).cleaner(); + if (cleaner != null) cleaner.clean(); // Already cleaned otherwise + } return null; } - catch (Exception e) { + catch (Throwable e) { return buffer; } } diff --git a/platform/util/src/com/intellij/util/io/MappedBufferWrapper.java b/platform/util/src/com/intellij/util/io/MappedBufferWrapper.java index 30490f454c84..840abaa07c83 100644 --- a/platform/util/src/com/intellij/util/io/MappedBufferWrapper.java +++ b/platform/util/src/com/intellij/util/io/MappedBufferWrapper.java @@ -17,7 +17,6 @@ package com.intellij.util.io; import com.intellij.openapi.diagnostic.Logger; import com.intellij.util.TimeoutUtil; -import sun.nio.ch.DirectBuffer; import java.io.File; import java.io.IOException; @@ -78,7 +77,7 @@ public abstract class MappedBufferWrapper extends ByteBufferWrapper { return false; } - return DirectBufferWrapper.disposeDirectBuffer((DirectBuffer)buffer); + return DirectBufferWrapper.disposeDirectBuffer(buffer); } private static boolean tryForce(MappedByteBuffer buffer) {