diff options
author | 2014-01-09 20:41:26 +0000 | |
---|---|---|
committer | 2014-01-09 20:41:26 +0000 | |
commit | 35b7de4c4562db8af697ad3384c09d2258d183ba (patch) | |
tree | de0615894d3b9f3dd0f0e7dde914fe76a6dfbf3d | |
parent | 76d5cdd820b5d81af8de73180c272d7f8a01caae (diff) | |
parent | 55eda43af9f71b098c434cab831795d7ca8842ac (diff) |
Merge "Cursor leakage due to cancellation signal"
-rw-r--r-- | core/java/android/content/ContentProviderNative.java | 13 |
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(); } |