From 1b2a61ed49fdd8d260e91b3e89fabe5e1feb8ca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Tue, 20 Dec 2022 11:01:13 +0800 Subject: [PATCH] Image: init MagickCore environment before using it I don't know why im6 works without initialization, but im7 doesn't. --- src/logo/image/image.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/logo/image/image.c b/src/logo/image/image.c index dec706ffe..4d8d68b0f 100644 --- a/src/logo/image/image.c +++ b/src/logo/image/image.c @@ -273,6 +273,8 @@ static bool printImageChafa(FFinstance* instance, FFLogoRequestData* requestData FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, FFLogoRequestData* requestData, const FFIMData* imData) { + FF_LIBRARY_LOAD_SYMBOL(imData->library, MagickCoreGenesis, FF_LOGO_IMAGE_RESULT_INIT_ERROR); + FF_LIBRARY_LOAD_SYMBOL(imData->library, MagickCoreTerminus, FF_LOGO_IMAGE_RESULT_INIT_ERROR); FF_LIBRARY_LOAD_SYMBOL(imData->library, AcquireExceptionInfo, FF_LOGO_IMAGE_RESULT_INIT_ERROR) FF_LIBRARY_LOAD_SYMBOL(imData->library, DestroyExceptionInfo, FF_LOGO_IMAGE_RESULT_INIT_ERROR) FF_LIBRARY_LOAD_SYMBOL(imData->library, AcquireImageInfo, FF_LOGO_IMAGE_RESULT_INIT_ERROR) @@ -286,14 +288,20 @@ FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, FFLogoRequestData* FF_LIBRARY_LOAD_SYMBOL_VAR(imData->library, imageData, ImageToBlob, FF_LOGO_IMAGE_RESULT_INIT_ERROR) FF_LIBRARY_LOAD_SYMBOL_VAR(imData->library, imageData, Base64Encode, FF_LOGO_IMAGE_RESULT_INIT_ERROR) + ffMagickCoreGenesis(NULL, MagickFalse); + imageData.exceptionInfo = ffAcquireExceptionInfo(); if(imageData.exceptionInfo == NULL) + { + ffMagickCoreTerminus(); return FF_LOGO_IMAGE_RESULT_RUN_ERROR; + } ImageInfo* imageInfoIn = ffAcquireImageInfo(); if(imageInfoIn == NULL) { ffDestroyExceptionInfo(imageData.exceptionInfo); + ffMagickCoreTerminus(); return FF_LOGO_IMAGE_RESULT_RUN_ERROR; } @@ -305,6 +313,7 @@ FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, FFLogoRequestData* if(imageData.image == NULL) { ffDestroyExceptionInfo(imageData.exceptionInfo); + ffMagickCoreTerminus(); return FF_LOGO_IMAGE_RESULT_RUN_ERROR; } @@ -325,6 +334,7 @@ FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, FFLogoRequestData* { ffDestroyImage(imageData.image); ffDestroyExceptionInfo(imageData.exceptionInfo); + ffMagickCoreTerminus(); return FF_LOGO_IMAGE_RESULT_RUN_ERROR; } @@ -333,6 +343,7 @@ FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, FFLogoRequestData* if(resized == NULL) { ffDestroyExceptionInfo(imageData.exceptionInfo); + ffMagickCoreTerminus(); return FF_LOGO_IMAGE_RESULT_RUN_ERROR; } imageData.image = resized; @@ -342,6 +353,7 @@ FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, FFLogoRequestData* { ffDestroyImage(imageData.image); ffDestroyExceptionInfo(imageData.exceptionInfo); + ffMagickCoreTerminus(); return FF_LOGO_IMAGE_RESULT_RUN_ERROR; } @@ -360,6 +372,7 @@ FFLogoImageResult ffLogoPrintImageImpl(FFinstance* instance, FFLogoRequestData* ffDestroyImageInfo(imageData.imageInfo); ffDestroyImage(imageData.image); ffDestroyExceptionInfo(imageData.exceptionInfo); + ffMagickCoreTerminus(); return printSuccessful ? FF_LOGO_IMAGE_RESULT_SUCCESS : FF_LOGO_IMAGE_RESULT_RUN_ERROR; }