Skip to content

Commit ccd0181

Browse files
Ahmed El-Helwgrabbou
authored andcommitted
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
1 parent a7a34a1 commit ccd0181

1 file changed

Lines changed: 3 additions & 11 deletions

File tree

ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@
1111

1212
import android.net.Uri;
1313

14-
import com.facebook.react.bridge.Arguments;
15-
import com.facebook.react.bridge.Callback;
16-
import com.facebook.react.bridge.WritableMap;
1714
import com.facebook.common.executors.CallerThreadExecutor;
1815
import com.facebook.common.references.CloseableReference;
1916
import com.facebook.datasource.BaseDataSubscriber;
@@ -23,10 +20,12 @@
2320
import com.facebook.imagepipeline.image.CloseableImage;
2421
import com.facebook.imagepipeline.request.ImageRequest;
2522
import com.facebook.imagepipeline.request.ImageRequestBuilder;
23+
import com.facebook.react.bridge.Arguments;
2624
import com.facebook.react.bridge.Promise;
2725
import com.facebook.react.bridge.ReactApplicationContext;
2826
import com.facebook.react.bridge.ReactContextBaseJavaModule;
2927
import com.facebook.react.bridge.ReactMethod;
28+
import com.facebook.react.bridge.WritableMap;
3029

3130
public class ImageLoaderModule extends ReactContextBaseJavaModule {
3231

@@ -83,27 +82,20 @@ protected void onNewResultImpl(
8382
sizes.putInt("width", image.getWidth());
8483
sizes.putInt("height", image.getHeight());
8584

86-
image.close();
8785
promise.resolve(sizes);
8886
} catch (Exception e) {
8987
promise.reject(ERROR_GET_SIZE_FAILURE, e);
9088
} finally {
9189
CloseableReference.closeSafely(ref);
92-
dataSource.close();
9390
}
9491
} else {
95-
dataSource.close();
9692
promise.reject(ERROR_GET_SIZE_FAILURE);
9793
}
9894
}
9995

10096
@Override
10197
protected void onFailureImpl(DataSource<CloseableReference<CloseableImage>> dataSource) {
102-
try {
103-
promise.reject(ERROR_GET_SIZE_FAILURE, dataSource.getFailureCause());
104-
} finally {
105-
dataSource.close();
106-
}
98+
promise.reject(ERROR_GET_SIZE_FAILURE, dataSource.getFailureCause());
10799
}
108100
};
109101
dataSource.subscribe(dataSubscriber, CallerThreadExecutor.getInstance());

0 commit comments

Comments
 (0)