From 600f6c7f24276aace7daf830f2b62437f66722f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 18 Dec 2023 21:25:15 +0800 Subject: [PATCH] Image: don't `dlclose(imageMagick)` Fix: #552 --- CHANGELOG.md | 1 + src/logo/image/im6.c | 5 ++++- src/logo/image/im7.c | 5 ++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f01bd52a1b..7d24f17423 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ Bugfixes: * Fix memory usage counting algorithm (Memory, macOS) * Fix the behavior of `--no-buffer` in Windows * Fix possible segfault in some devices (Display, Linux) +* Fix segfaults on first use of new images with Sixel flag (Image) Logo: * Remove unnecessary escaping for Adelie logo diff --git a/src/logo/image/im6.c b/src/logo/image/im6.c index a8820f53b2..9694a797b4 100644 --- a/src/logo/image/im6.c +++ b/src/logo/image/im6.c @@ -17,10 +17,13 @@ FFLogoImageResult ffLogoPrintImageIM6(FFLogoRequestData* requestData) FF_LIBRARY_LOAD(imageMagick, &instance.config.library.libImageMagick, FF_LOGO_IMAGE_RESULT_INIT_ERROR, "libMagickCore-6.Q16HDRI" FF_LIBRARY_EXTENSION, 8, "libMagickCore-6.Q16" FF_LIBRARY_EXTENSION, 8) FF_LIBRARY_LOAD_SYMBOL_ADDRESS(imageMagick, ffResizeImage, ResizeImage, FF_LOGO_IMAGE_RESULT_INIT_ERROR); - return ffLogoPrintImageImpl(requestData, &(FFIMData) { + FFLogoImageResult result = ffLogoPrintImageImpl(requestData, &(FFIMData) { .resizeFunc = logoResize, .library = imageMagick, }); + + imageMagick = NULL; // leak imageMagick to prevent fastfetch from crashing #552 + return result; } #endif diff --git a/src/logo/image/im7.c b/src/logo/image/im7.c index 03229aacb1..b0eeed2dc6 100644 --- a/src/logo/image/im7.c +++ b/src/logo/image/im7.c @@ -21,10 +21,13 @@ FFLogoImageResult ffLogoPrintImageIM7(FFLogoRequestData* requestData) ) FF_LIBRARY_LOAD_SYMBOL_ADDRESS(imageMagick, ffResizeImage, ResizeImage, FF_LOGO_IMAGE_RESULT_INIT_ERROR); - return ffLogoPrintImageImpl(requestData, &(FFIMData) { + FFLogoImageResult result = ffLogoPrintImageImpl(requestData, &(FFIMData) { .resizeFunc = logoResize, .library = imageMagick, }); + + imageMagick = NULL; // leak imageMagick to prevent fastfetch from crashing #552 + return result; } #endif