diff options
author | 2019-07-25 04:40:22 +0000 | |
---|---|---|
committer | 2019-07-25 04:40:22 +0000 | |
commit | 5783a79cfc8eb24fa5669592aa50b6ce7d7a7ff9 (patch) | |
tree | 0e73a85a585d0f8bf1de088e5f9a82fea0dca789 | |
parent | ff17b0826b33e2961431003b353fcca115b345f2 (diff) | |
parent | 6ca916a657cd56158212a57601108716ce78cbe8 (diff) |
Merge "SharedMemory: break Cleaner reference cycle."
-rw-r--r-- | core/java/android/os/SharedMemory.java | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/core/java/android/os/SharedMemory.java b/core/java/android/os/SharedMemory.java index 6025c348853c..4c12c325bde3 100644 --- a/core/java/android/os/SharedMemory.java +++ b/core/java/android/os/SharedMemory.java @@ -62,7 +62,7 @@ public final class SharedMemory implements Parcelable, Closeable { mMemoryRegistration = new MemoryRegistration(mSize); mCleaner = Cleaner.create(mFileDescriptor, - new Closer(mFileDescriptor, mMemoryRegistration)); + new Closer(mFileDescriptor.getInt$(), mMemoryRegistration)); } /** @@ -290,10 +290,10 @@ public final class SharedMemory implements Parcelable, Closeable { * Cleaner that closes the FD */ private static final class Closer implements Runnable { - private FileDescriptor mFd; + private int mFd; private MemoryRegistration mMemoryReference; - private Closer(FileDescriptor fd, MemoryRegistration memoryReference) { + private Closer(int fd, MemoryRegistration memoryReference) { mFd = fd; mMemoryReference = memoryReference; } @@ -301,7 +301,9 @@ public final class SharedMemory implements Parcelable, Closeable { @Override public void run() { try { - Os.close(mFd); + FileDescriptor fd = new FileDescriptor(); + fd.setInt$(mFd); + Os.close(fd); } catch (ErrnoException e) { /* swallow error */ } mMemoryReference.release(); mMemoryReference = null; |