From 09e7113df100513ffeae7b14131041dc6bb8edda Mon Sep 17 00:00:00 2001 From: tarsin Date: Mon, 25 Jul 2022 12:23:52 +0800 Subject: [PATCH] Fix a dirty dealloc --- native/src/main/jni/image/image.c | 22 +++------------------- native/src/main/jni/image/image.h | 2 +- 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/native/src/main/jni/image/image.c b/native/src/main/jni/image/image.c index ac6ec1491..77874acd9 100644 --- a/native/src/main/jni/image/image.c +++ b/native/src/main/jni/image/image.c @@ -76,33 +76,18 @@ IMAGE *createFromAddr(JNIEnv *env, void *addr, long size, bool partially, int *f return image; } -void *create(int32_t width, int32_t height, const void *data) { - IMAGE *plain = NULL; +IMAGE *create(int32_t width, int32_t height, const void *data) { + IMAGE *plain = calloc(1, sizeof(IMAGE)); void *buffer = NULL; - size_t length; - - plain = malloc(sizeof(IMAGE)); - if (plain == NULL) { - WTF_OM; - return NULL; - } - - length = (size_t) (width * height * 4); + size_t length = width * height * 4; buffer = malloc(length); - if (buffer == NULL) { - WTF_OM; - free(plain); - return NULL; - } - memcpy(buffer, data, length); plain->width = width; plain->height = height; plain->buffer = buffer; plain->bufferLen = length; - plain->decoder = NULL; return plain; } @@ -184,7 +169,6 @@ void clahe(IMAGE *image, int format, bool to_gray) { void recycle(JNIEnv *env, IMAGE *image, int format) { free(image->buffer); - image->buffer = NULL; AImageDecoderFrameInfo_delete(image->frameInfo); AImageDecoder_delete(image->decoder); free(image->srcBuffer); diff --git a/native/src/main/jni/image/image.h b/native/src/main/jni/image/image.h index f21a68195..3b9e606c2 100644 --- a/native/src/main/jni/image/image.h +++ b/native/src/main/jni/image/image.h @@ -42,7 +42,7 @@ IMAGE *createFromFd(JNIEnv *env, int fd, bool partially, int *format); IMAGE *createFromAddr(JNIEnv *env, void *addr, long size, bool partially, int *format); -void *create(int32_t width, int32_t height, const void *data); +IMAGE *create(int32_t width, int32_t height, const void *data); int get_width(IMAGE *image, int format);