summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <treehugger-gerrit@google.com> 2019-07-25 04:40:22 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2019-07-25 04:40:22 +0000
commit5783a79cfc8eb24fa5669592aa50b6ce7d7a7ff9 (patch)
tree0e73a85a585d0f8bf1de088e5f9a82fea0dca789
parentff17b0826b33e2961431003b353fcca115b345f2 (diff)
parent6ca916a657cd56158212a57601108716ce78cbe8 (diff)
Merge "SharedMemory: break Cleaner reference cycle."
-rw-r--r--core/java/android/os/SharedMemory.java10
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;