diff --git a/native/src/main/jni/image/image.c b/native/src/main/jni/image/image.c index d9899d4d9..266ad38eb 100644 --- a/native/src/main/jni/image/image.c +++ b/native/src/main/jni/image/image.c @@ -53,8 +53,9 @@ void decodeCommon(IMAGE *image, SOURCE *src) { } IMAGE *createFromFd(int fd) { - AImageDecoder *decoder; - AImageDecoder_createFromFd(fd, &decoder); + AImageDecoder *decoder = NULL; + if (AImageDecoder_createFromFd(fd, &decoder) != ANDROID_IMAGE_DECODER_SUCCESS) + return NULL; IMAGE *image = calloc(1, sizeof(IMAGE)); SOURCE *src = calloc(1, sizeof(SOURCE)); src->decoder = decoder; diff --git a/native/src/main/jni/image/java_wrapper.c b/native/src/main/jni/image/java_wrapper.c index 20321d57c..38cc4c1e0 100644 --- a/native/src/main/jni/image/java_wrapper.c +++ b/native/src/main/jni/image/java_wrapper.c @@ -53,6 +53,8 @@ jobject create_image_object(JNIEnv *env, void *ptr, int format, int width, int h JNIEXPORT jobject JNICALL Java_com_hippo_image_Image_nativeDecodeFdInt(JNIEnv *env, jclass clazz, jint fd) { IMAGE *image = createFromFd(fd); + if (!image) + return NULL; return create_image_object(env, image, image->isAnimated, image->width, image->height); }