Attempt to fix a direct memory deallocation crash on android
This commit is contained in:
parent
87cfae6d7b
commit
2120c9d334
@ -149,10 +149,21 @@ public final class ReflectionAllocator implements BufferAllocator {
|
||||
// first
|
||||
Object viewedBuffer = localViewedBufferMethod.invoke(toBeDestroyed);
|
||||
if (viewedBuffer != null) {
|
||||
destroyDirectBuffer((Buffer) viewedBuffer);
|
||||
} else {
|
||||
Logger.getLogger(BufferUtils.class.getName()).log(Level.SEVERE,
|
||||
"Buffer cannot be destroyed: {0}", toBeDestroyed);
|
||||
if (viewedBuffer instanceof Buffer) {
|
||||
destroyDirectBuffer((Buffer) viewedBuffer);
|
||||
} else {
|
||||
//on android there is an internal MemoryRef class that is returned and has a "free" method.
|
||||
Method freeMethod = loadMethod(viewedBuffer.getClass().getName(), "free");
|
||||
if (freeMethod != null) {
|
||||
freeMethod.invoke(viewedBuffer);
|
||||
} else {
|
||||
Logger.getLogger(BufferUtils.class.getName()).log(Level.SEVERE,
|
||||
"Buffer cannot be destroyed: {0}, {1}", new Object[]{toBeDestroyed, viewedBuffer});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Logger.getLogger(BufferUtils.class.getName()).log(Level.SEVERE,
|
||||
"Buffer cannot be destroyed: {0}", toBeDestroyed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user