From 99e2a67b3992c3d76fa519a5880d7abc5c57b7a2 Mon Sep 17 00:00:00 2001 From: Ahmed El-Helw Date: Fri, 17 Jun 2016 11:52:32 -0700 Subject: [PATCH] Don't close reference to image in getSize Summary: ImageLoader improperly closes both the image reference (which is shared) and the DataSource (which is shared, and should only be handled by BaseDataSubscriber when it is correct). Reviewed By: plamenko Differential Revision: D3441752 fbshipit-source-id: bfb3d0281cd9ae789cba4079978ef46d295ac8f5 --- .../react/modules/image/ImageLoaderModule.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java index 3596a46cb..34648f1f1 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java @@ -11,9 +11,6 @@ package com.facebook.react.modules.image; import android.net.Uri; -import com.facebook.react.bridge.Arguments; -import com.facebook.react.bridge.Callback; -import com.facebook.react.bridge.WritableMap; import com.facebook.common.executors.CallerThreadExecutor; import com.facebook.common.references.CloseableReference; import com.facebook.datasource.BaseDataSubscriber; @@ -23,10 +20,12 @@ import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.imagepipeline.image.CloseableImage; import com.facebook.imagepipeline.request.ImageRequest; import com.facebook.imagepipeline.request.ImageRequestBuilder; +import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.WritableMap; public class ImageLoaderModule extends ReactContextBaseJavaModule { @@ -83,27 +82,20 @@ public class ImageLoaderModule extends ReactContextBaseJavaModule { sizes.putInt("width", image.getWidth()); sizes.putInt("height", image.getHeight()); - image.close(); promise.resolve(sizes); } catch (Exception e) { promise.reject(ERROR_GET_SIZE_FAILURE, e); } finally { CloseableReference.closeSafely(ref); - dataSource.close(); } } else { - dataSource.close(); promise.reject(ERROR_GET_SIZE_FAILURE); } } @Override protected void onFailureImpl(DataSource> dataSource) { - try { - promise.reject(ERROR_GET_SIZE_FAILURE, dataSource.getFailureCause()); - } finally { - dataSource.close(); - } + promise.reject(ERROR_GET_SIZE_FAILURE, dataSource.getFailureCause()); } }; dataSource.subscribe(dataSubscriber, CallerThreadExecutor.getInstance());