summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Christopher Tate <ctate@android.com> 2014-01-09 20:41:26 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2014-01-09 20:41:26 +0000
commit35b7de4c4562db8af697ad3384c09d2258d183ba (patch)
treede0615894d3b9f3dd0f0e7dde914fe76a6dfbf3d
parent76d5cdd820b5d81af8de73180c272d7f8a01caae (diff)
parent55eda43af9f71b098c434cab831795d7ca8842ac (diff)
Merge "Cursor leakage due to cancellation signal"
-rw-r--r--core/java/android/content/ContentProviderNative.java13
1 files changed, 10 insertions, 3 deletions
diff --git a/core/java/android/content/ContentProviderNative.java b/core/java/android/content/ContentProviderNative.java
index bcf0b637a213..39286d6ea9b6 100644
--- a/core/java/android/content/ContentProviderNative.java
+++ b/core/java/android/content/ContentProviderNative.java
@@ -112,17 +112,24 @@ abstract public class ContentProviderNative extends Binder implements IContentPr
Cursor cursor = query(callingPkg, url, projection, selection, selectionArgs,
sortOrder, cancellationSignal);
if (cursor != null) {
+ CursorToBulkCursorAdaptor adaptor = null;
+
try {
- CursorToBulkCursorAdaptor adaptor = new CursorToBulkCursorAdaptor(
- cursor, observer, getProviderName());
- BulkCursorDescriptor d = adaptor.getBulkCursorDescriptor();
+ adaptor = new CursorToBulkCursorAdaptor(cursor, observer,
+ getProviderName());
cursor = null;
+ BulkCursorDescriptor d = adaptor.getBulkCursorDescriptor();
+ adaptor = null;
+
reply.writeNoException();
reply.writeInt(1);
d.writeToParcel(reply, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
} finally {
// Close cursor if an exception was thrown while constructing the adaptor.
+ if (adaptor != null) {
+ adaptor.close();
+ }
if (cursor != null) {
cursor.close();
}