mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
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)
This commit is contained in:
@@ -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<Object>() {
|
||||
@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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user