Bug 1346235 - part 2: translate memory error to I/O failure. r?jchen
MozReview-Commit-ID: F2ca0q2JQp
--- a/mobile/android/base/java/org/mozilla/gecko/mozglue/SharedMemBuffer.java
+++ b/mobile/android/base/java/org/mozilla/gecko/mozglue/SharedMemBuffer.java
@@ -49,27 +49,35 @@ public final class SharedMemBuffer imple
return mSharedMem != null ? mSharedMem.getSize() : 0;
}
@Override
public void readFromByteBuffer(ByteBuffer src, int offset, int size) throws IOException {
if (!src.isDirect()) {
throw new IOException("SharedMemBuffer only support reading from direct byte buffer.");
}
- nativeReadFromDirectBuffer(src, mSharedMem.getPointer(), offset, size);
+ try {
+ nativeReadFromDirectBuffer(src, mSharedMem.getPointer(), offset, size);
+ } catch (NullPointerException e) {
+ throw new IOException(e);
+ }
}
private native static void nativeReadFromDirectBuffer(ByteBuffer src, long dest, int offset, int size);
@Override
public void writeToByteBuffer(ByteBuffer dest, int offset, int size) throws IOException {
if (!dest.isDirect()) {
throw new IOException("SharedMemBuffer only support writing to direct byte buffer.");
}
- nativeWriteToDirectBuffer(mSharedMem.getPointer(), dest, offset, size);
+ try {
+ nativeWriteToDirectBuffer(mSharedMem.getPointer(), dest, offset, size);
+ } catch (NullPointerException e) {
+ throw new IOException(e);
+ }
}
private native static void nativeWriteToDirectBuffer(long src, ByteBuffer dest, int offset, int size);
@Override
public void dispose() {
if (mSharedMem != null) {
mSharedMem.dispose();