diff options
| author | Josh Gao <jmgao@google.com> | 2019-07-31 12:29:11 -0700 |
|---|---|---|
| committer | Josh Gao <jmgao@google.com> | 2019-07-31 15:19:11 -0700 |
| commit | 9fdb8f99107bddcc249999a1a1e2b7f22fc2b05b (patch) | |
| tree | 749ec2440e0834d39c5b10d75836175b88209387 /core/java/android | |
| parent | 9428f73436d2e06eec82ab62e72fc5ed8f6a69bf (diff) | |
Revert "Revert "SharedMemory: break Cleaner reference cycle.""
This commit was reverted in Q because it broke things, but we want it in
master.
This reverts commit c36d0765a25d4701980738dc3e2053f19eb3d6b8.
Change-Id: I809d9191eee4909d265d2864ebd523f262f6bb61
Test: treehugger
Diffstat (limited to 'core/java/android')
| -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 e86998bf4b38..161a4b31f63e 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)); } /** @@ -293,10 +293,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; } @@ -304,7 +304,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; |
