summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Josh Gao <jmgao@google.com> 2019-07-24 22:17:45 -0700
committer android-build-merger <android-build-merger@google.com> 2019-07-24 22:17:45 -0700
commit132b66b0c2678f4365e360a99df4533f3acf7fce (patch)
tree08753a3b3d5ef00f0c33e4f2e232520f6bdb378a
parent0f0273763ba465ef2c945f7d48bdef0e9c2758db (diff)
parente9c55ddce153fb669ed2e6a6b3bfceb2a4a9e508 (diff)
Merge "SharedMemory: break Cleaner reference cycle." am: 5783a79cfc
am: e9c55ddce1 Change-Id: I8444786cdde94c75e3711349bad812d514a58890
-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 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;