2026-01-27  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

        * PerlMagick/Makefile.am (clean-perl): 'make clean' now removes
        any symbolic links in the PerlMagick directory which point back to
        the GraphicsMagick source tree.

        * magick/color_lookup.c (GetColorList): Add missing break
        statement. Should resolve Coverity 501366 "Resource leak".

        * magick/color_lookup.h: Move definition of ColorInfo into
        color_lookup.c. Move declarations of GetColorInfo() and
        GetColorInfoArray() into color_lookup.c.

        * magick/color_lookup.c (GetColorInfo): Optimize to minimize
        up-front penalties rather than for repeated look-ups for the same
        color name. No longer re-order linked list based on most recently
        accessed entry. Remove locking which is no longer necessary in
        other functions. Block out compilation of GetColorInfoArray()
        since it was only declared privately, and was never used.

2026-01-26  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

        * magick/pixel_cache.c (OpenCache): After acquiring the images
        resource, release the images resource if the cache otherwise fails
        to successfully open.

        * magick/pixel_cache.c: Include the cache_info address as a useful
        identifier in CacheEvent log messages.

        * coders/png.c: Attempt to release memory after error due to
        hitting ImagesResource limit.  Addresses oss-fuzz 478558487
        "graphicsmagick:coder_MNG_fuzzer: Direct-leak in MagickMalloc".

2026-01-25  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

        * fuzzing/oss-fuzz-build.sh (BUILD): Use -rj when creating MIFF
        corpus since now there are no conflicting names.

        * PerlMagick/t/zlib/{read.t, write.t, input_zlib.miff:
        * input_zlib.miff.gz]: Rename files so that they are
        non-conflicting for oss-fuzz corpus.

        * coders/heif.c (RegisterHEIFImage): Re-add a module registration
        for HEIC, which got lost during prior edits.

        * fuzzing/oss-fuzz-build.sh: Shell syntax clean-up.
        (BUILD): Create seed_corpus files.

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.
