summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorJosh Gao <jmgao@google.com>2019-07-31 12:29:11 -0700
committerJosh Gao <jmgao@google.com>2019-07-31 15:19:11 -0700
commit9fdb8f99107bddcc249999a1a1e2b7f22fc2b05b (patch)
tree749ec2440e0834d39c5b10d75836175b88209387 /core/java/android
parent9428f73436d2e06eec82ab62e72fc5ed8f6a69bf (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.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 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;