Bug 1346235 - part 2: translate memory error to I/O failure. r?jchen draft
authorJohn Lin <jolin@mozilla.com>
Fri, 17 Mar 2017 15:04:26 +0800
changeset 501425 4b4ae3da61297f1049e501a398cd995b56d74c9e
parent 501424 97f5638c073da97db24badc5b81d5dd239b662a2
child 501426 2db5fa238418b4aae726962ab7d3bbd083a985dc
child 501428 dff1e465525934b17d6fab70e523a4f6b54b5f3e
child 501430 2d966b1b5f19692739da24ceb6b790279c27b7c4
push id49980
push userbmo:jolin@mozilla.com
push dateMon, 20 Mar 2017 09:03:43 +0000
reviewersjchen
bugs1346235
milestone55.0a1
Bug 1346235 - part 2: translate memory error to I/O failure. r?jchen MozReview-Commit-ID: F2ca0q2JQp
mobile/android/base/java/org/mozilla/gecko/mozglue/SharedMemBuffer.java
--- 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();