GraphicsMagick ChangeLog
2026-01-25 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
fuzzing/oss-fuzz-build.sh: Shell syntax clean-up.
2026-01-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
fuzzing/oss-fuzz-build.sh: Tidy the GraphicsMagick part of the build. Install GraphicsMagick config files under /out so that they will be discovered, and possibly loaded.
fuzzing/utils.cc (LLVMFuzzerInitialize): Provide an alternate build mode which uses LLVMFuzzerInitialize() to pass an argument to InitializeMagick() for dynamic initialization. Default initialization is still based on as static class instantiation.
fuzzing/coder_list.cc (main): Support passing an argument to InitializeMagick().
2026-01-23 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
fuzzing/oss-fuzz-build.sh (BUILD): Add -Wno-error=shorten-64-to-32 to vvenc i386 build options to avoid build failure.
2026-01-22 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
fuzzing/oss-fuzz-build.sh: Add checks to verify that source directory does exist before trying to compile it. Disable building libtiff temporarily due to a compilation issue.
2026-01-21 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
www/INSTALL-windows.rst: Record that libtiff is updated to libtiff 4.7.1.
Magick++/lib/Thread.cpp (Magick::MutexLock::unlock): Fix Magick::MutexLock::unlock cerr compilation.
2026-01-21 Matt Gilarde <mattg@progress.com>
Update libtiff from 4.5.1 to 4.7.1.
2026-01-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
fuzzing/oss-fuzz-build.sh: Re-written to eliminate pushd/popd, avoid environment variable pollution, build everything outside of the source trees, and added support for building openh264, vvdec, vvenc, x264 (with support by libheif), once the oss-fuzz Dockerfile is updated to provide them.
configure.ac: Remove unwanted space.
2026-01-16 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
magick/pixel_cache.c, magick/resource.c, magick/resource.h: Add support for ImagesResource limit, and -limit images for the command line. This is a limit on the number of discrete images loaded into the program simultaneously.
coders/heif.c: If we have libheif/heif_sequences.h, then use it.
2026-01-15 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
Magick++/lib/Thread.cpp (Magick::MutexLock::unlock): Do not throw C++ exception since this method is used by the destructor and C++ exceptions should not be thrown from destructors. Another case of Coverity 501168 "Uncaught exception".
coders/heif.c (ReadHEIFImageFrame): Fix opacity code for monochrome HEIF image. Use union for plane pointer access.
2026-01-14 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
coders/heif.c: Add preliminary support for a "MP4" coder.
configure.ac: Add a check for libheif/heif_sequences.h.
2026-01-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
magick/blob.c: Restore use of externally allocated stdio vbuf. It appears that some versions of GNU libc (e.g. 2.31) may attempt to access bytes in a self-allocated vbuf which were not initialized. Should close oss-fuzz issues 475333713, 475305110, and 475335803.
2026-01-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
PerlMagick/t/heif: Add some sample images for AVCI, AVIF, and HEIC.
coders/heif.c (ReadHEIFImageFrame): Throw exception rather than abort if heif_image_get_plane_readonly2() returns NULL. (RegisterHEIFImage): Add coder registrations for "AVCI" and "AVIF".
2026-01-10 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
Magick++/lib/Thread.cpp (Magick::MutexLock::~MutexLock): Fix Coverity "CID 501168: Error handling issues (UNCAUGHT_EXCEPT)". C++ destructors should not throw exceptions.
PerlMagick/Magick.xs: Fixes so PerlMagick can build with C++.
coders/heif.c (ReadHEIFImage): Log the 'magick' string assignment.
magick/magick.c (MagickToMime): Add more MIME mappings.
coders/heif.c (IsHEIF): Use heif_check_filetype() to verify that the input appears to be HEIF.
2026-01-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
coders/heif.c (ReadHEIFImage): Support accessing file data directly from in-memory blob. Add a simple header sanity check.
magick/blob.c (OpenBlob): Have setvbuf() allocate the buffer rather than managing it independently.
coders/heif.c (ReadHEIFImage): Support reading multiple image frames. Deduce image magick string by asking libheif what it is.
2026-01-07 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
Magick++/lib/Image.cpp (Magick::Image::monochrome): If monochrome is disabled, then clear the image is_monochrome flag if it is set. This may help for issues such as SourceForge issue #397 "DIB: Unable to write a monochrome DIB as 8bit depth.".
coders/dib.c (WriteDIBImage): Add tracing to reveal the image storage representation.
NEWS.txt: Update the news.
Magick++/lib/Magick++/Thread.h, Magick++/lib/Thread.cpp: Change definition used to enable pthreads support from HasPTHREADS to HAVE_PTHREAD. Magick++ code relying on this has not been thread-safe since 2003! Much thanks to Michael Stephan for making me aware of this.
coders/wbmp.c (RegisterWBMPImage): Support "WBM" and "WBP" as extensions for WBMP format. Resolves SourceForge issue #192 "can not open *.wbm".
2026-01-06 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
coders/jpeg.c (ReadJPEGImage): While in ping mode, set is_grayscale true for JCS_GRAYSCALE images, and otherwise set is_grayscale and is_monochrome to false. This should help GetImageCharacteristics() report something useful while in ping mode. Resolves SourceForge issue "#614 ping(blob) reports JPG and JNX files as monochrome BilevelType".
2026-01-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
coders/jp2.c (WriteJP2Image): Specifying '-define jp2:rate=1.0' is documented to use lossless compression (by removing the rate specification entirely), but this was not working properly. Fixed now.
2026-01-02 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
Copyright.txt: Updated copyright year. Rotated ChangeLog to ChangeLog.2025.
2026-01-02 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
wand/drawing_wand.c: The existing function bodies are gutted and replaced with calls into the equivalent functions in magick/draw.c. This eliminates a large amount of replicated code.
magick/draw.c (DrawCloneContext): New function to replicate (deep copy) an existing drawing context.