diff options
| author | 2019-07-24 22:17:45 -0700 | |
|---|---|---|
| committer | 2019-07-24 22:17:45 -0700 | |
| commit | 132b66b0c2678f4365e360a99df4533f3acf7fce (patch) | |
| tree | 08753a3b3d5ef00f0c33e4f2e232520f6bdb378a | |
| parent | 0f0273763ba465ef2c945f7d48bdef0e9c2758db (diff) | |
| parent | e9c55ddce153fb669ed2e6a6b3bfceb2a4a9e508 (diff) | |
Merge "SharedMemory: break Cleaner reference cycle." am: 5783a79cfc
am: e9c55ddce1
Change-Id: I8444786cdde94c75e3711349bad812d514a58890
| -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 57a88012a31a..3e2ba3d3115f 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; |