Skip to content

Commit c54ab87

Browse files
sohobloofacebook-github-bot
authored andcommitted
Fix cropImage crash with float displaySize
Summary: On Android, using `ImageEditor.cropImage` with `displaySize` option may causes crash with exception below: ``` FATAL EXCEPTION: mqt_native_modules Process: me.sohobloo.test, PID: 11308 com.facebook.react.bridge.UnexpectedNativeTypeException: TypeError: expected dynamic type `int64', but had type `double' at com.facebook.react.bridge.ReadableNativeMap.getInt(Native Method) at com.facebook.react.modules.camera.ImageEditingManager.cropImage(ImageEditingManager.java:196) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.facebook.react.bridge.BaseJavaModule$JavaMethod.invoke(BaseJavaModule.java:345) at com.facebook.react.cxxbridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:141) at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31) at android.os.Looper.loop(Looper.java:194) at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196) at java.lang.Thread.run(Thread.java:818) ``` This is caused by getInt from `number` type of JS. ```javascript ImageEditor.cropImage( uri, { offset: {x: 0, y: 0}, size: {width: 320, height: 240}, displaySize: {width: 320.5, height: 240.5} } ); ``` Closes facebook/react-native#13312 Differential Revision: D5462709 Pulled By: shergin fbshipit-source-id: 42cb853b533769b6969b8ac9ad50f3dd3c764055
1 parent 4790014 commit c54ab87

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

ImageEditingManager.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,9 @@ public void cropImage(
193193
error);
194194
if (options.hasKey("displaySize")) {
195195
ReadableMap targetSize = options.getMap("displaySize");
196-
cropTask.setTargetSize(targetSize.getInt("width"), targetSize.getInt("height"));
196+
cropTask.setTargetSize(
197+
(int) targetSize.getDouble("width"),
198+
(int) targetSize.getDouble("height"));
197199
}
198200
cropTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
199201
}

0 commit comments

Comments
 (0)