GraphicsMagick

- Home
- Project
- Download
- Install
- Source
- News
- Utilities
- Programming
- Reference

# GraphicsMagick ChangeLog - 2025

2025-12-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - wand/drawing_wand.c: Add Magick prefix name to all functions so we do not rely on macro name remapping.

> - magick/draw.c, magick/draw.h (DrawNewContext): New function to allocate an empty drawing context.

2025-12-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

> - coders/ept.c (ReadEPTImage): Improve error handling pertaining to writing temporary file.

> - coders/info.c (WriteINFOImage): Ensure that temporary file descriptor gets closed.

> - coders/pnm.c (PNMInteger): Remove unused variable 'count'.

> - coders/ps.c (RenderPostscriptText): Improve error handling pertaining to writing temporary file.

> - magick/blob.c (CloseBlob): Use correct value when checking for pclose() error status.

> - tests/rwfile.c: Assure that imageInfo->file is not NULL before attempting to close it.

2025-12-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - PerlMagick/Magick.xs: Declare LookupStr() and strEQcase() to be pure functions.

> - www/index.rst: Provide a link to view oss-fuzz open issues pertaining to GraphicsMagick.

2025-12-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - PerlMagick/Magick.xs: Make code const-correct.

> - wand/wand_symbols.h: Add GmMagickSetBackgroundColor().

> - magick/symbols.h: Remove GmInsertRowHDU(), GmWriteBlobStringEOL(), and GmWriteBlobStringWithEOL().

> - magick/render.h: Add missing prototype for DrawCompositeMask().

> - magick/random.c (AcquireMagickRandomKernel): Provide AcquireMagickRandomKernel() with a proper prototype.

> - magick/random-private.h: Provide AcquireMagickRandomKernel(), InitializeMagickRandomGenerator(), DestroyMagickRandomGenerator() with proper prototypes.

> - coders/locale.c: Add missing prototypes for WriteBlobStringEOL() and WriteBlobStringWithEOL() and declare them to be static.

> - coders/fits.c: Add missing prototype for InsertRowHDU() and declare it static.

> - coders/dcm.c: Add missing prototype for DCM_SetRescaling() and declare it static.

> - wand/pixel_wand.h: Add missing prototype for PixelGetException().

> - wand/magick_wand.h: Add missing prototypes for MagickSetBackgroundColor() and MagickSetDepth().

> - magick/xwindow.c (MagickXMakeImage): Defend against window->segment_info unexpectedly being NULL.

2025-12-26 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/tiff.c (AddIFDExifFields): Detect and report the immediate IFD looping case (as occured with oss-fuzz 471415255) and quit looping immediately.

2025-12-25 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/tiff.c (AddIFDExifFields): Defend against computed IFD looping which results in non-terminal behavior. Addresses oss-fuzz 471415255 "graphicsmagick:coder_TIFF_any_fuzzer: Timeout in coder_TIFF_any_fuzzer".

2025-12-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - PerlMagick/MANIFEST: Update the PerlMagick manifest

> - coders/pnm.c (ReadPNMImage): Improve PNM ASCII formats reader error checking. Addresses oss-fuzz 471328914 "graphicsmagick:coder_PNM_fuzzer: Use-of-uninitialized-value in ExportViewPixelArea".

> - PerlMagick/t/input_p1t.pbm, PerlMagick/t/input_p2t.pgm:

> - PerlMagick/t/input_p3t.ppm add PNM ASCII test files which lack a terminating new-line character.

2025-12-22 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

> - magick/static.h: Fix conflicting prototype for AnalyzeImage.

> - Added type casts, prototypes, and tweaks needed in order to compile the C code using C++.

2025-12-21 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - PerlMagick/Magick.xs: Ignore inlining warnings.

> - coders/pnm.c (PNMInteger): verify value range for base=2. (PNMIntegerOrComment): verify value range for base=2.

> - magick/memory-private.h (MagickFreeResourceLimitedMemory): Add 'type' parameter to restore the type cast upon assignment which existed prior to changing to the resource-limited memory allocator. This results in edits to all files using this macro.

2025-12-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - fuzzing/oss-fuzz-build.sh: Allow libtiff bootstrap with Autoconf 2.69 until https://github.com/google/oss-fuzz/pull/14541 gets merged.

2025-12-16 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - fuzzing/oss-fuzz-build.sh: Add an optional cmake build recipe for libtiff.

2025-12-15 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/heif.c (ReadHEIFImage): Report security limits in one trace message. Fix delay in ping mode which accidentally reappeared.

2025-12-06 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/heif.c (ReadHEIFImageFrame): Check for error from heif_image_handle_get_image_tiling().

2025-12-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/heif.c (ReadHEIFImage): Allocate/initialize libheif decode_options in ReadHEIFImage() and pass as a parameter to subordinate functions.

2025-12-02 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/gif.c (ReadGIFImage): Initialize colormap entry which was added for opacity. Addresses oss-fuzz 465292618 "graphicsmagick:coder_GIF_fuzzer: Use-of-uninitialized-value in WriteGIFImage". (ReadGIFImage): Do not use case-insensitive compare when verifying header magick.

2025-12-01 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/xpm.c (ParseColor): Avoid a signed-unsigned comparison warning.

> - coders/pict.c (EncodeImage): Use correct formatter for bytes_per_line.

> - doc/options.imdoc: integrated SourceForge "Code Merge Request #21: Options Documentation: add jxl coder specific options" by Gabor Bata. Only added two small whitespace fixups and produced the generated documentation.

2025-11-27 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/gif.c (ReadGIFImage): Add more GIF header tracing. Eliminate oss-fuzz 464037554 "graphicsmagick:coder_GIF_fuzzer: Use-of-uninitialized-value in IsMonochromeImage".

2025-11-26 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/tiff.c (ReadTIFFImage): Compute possibly reasonable SingleMemAlloc and MaxCumulatedMemAlloc resource limit values and pass these TIFFOpenOptions to TIFFClientOpenExt().

2025-11-25 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/heif.c (ReadHEIFImage): Add additional tracing related to heif_list_compatible_brands(). (apply_security_limits): Trace all heif_security_limits members we know about, not just one ones we explictly set.

> - coders/gif.c (ReadGIFImage): Fix oss-fuzz 463511405 "graphicsmagick:coder_GIF87_fuzzer: Direct-leak in _MagickReallocateResourceLimitedMemoryLoc". This was a new issue introduced by recently updated code.

2025-11-23 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/heif.c (ReadHEIFImage): Fix Coverity 500032 "500032 Wrong sizeof argument".

> - coders/gif.c (ReadGIFImage): Store image comment in first image frame rather than the last frame. Resolves SourceForge issue 761 "Reading multiple GIFs doesn't read the comments correctly.". Also, change memory allocation to use resource-limited memory allocators. (WriteGIFImage): Use resource-limited memory allocators.

> - fuzzing/oss-fuzz-build.sh: Restore default liblzma coders. This will cause some oss-fuzz reports to re-appear.

2025-11-21 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/heif.c (ReadHEIFImageFrame): Report an error if libheif returns heif_error_Ok but failed to return an image. This should avoid oss-fuzz 462673424 "graphicsmagick:coder_HEIF_fuzzer: Null-dereference READ in heif_image_get_decoding_warnings".

> - fuzzing/oss-fuzz-build.sh: Also specify list of decoders when building liblzma.

2025-11-19 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/heif.c (ReadHEIFImage): Fixes for ignore_transformations in 'ping' mode. Trace decoding warnings. Don't use variable length arrays for "compatible_brands".

> - wand/magick_wand.c (MagickSetBackgroundColor): Add new function to support setting the default background color. Completes addressing GraphicsMagick discussion thread at https://sourceforge.net/p/graphicsmagick/discussion/250738/thread/542a23c291/ "How to load SVG with transparent background in C/Pascal?".

> - coders/mvg.c (ReadMVGImage): Initialize image canvas with the background color (default white), which may be transparent. Previously, the image was always set to opaque. Partially addresses GraphicsMagick discussion thread at https://sourceforge.net/p/graphicsmagick/discussion/250738/thread/542a23c291/ "How to load SVG with transparent background in C/Pascal?".

2025-11-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - fuzzing/oss-fuzz-build.sh: Update the xz configure options.

> - coders/heif.c (ReadHEIFImage): Read image frame from heif image handle using the function ReadHEIFImageFrame().

2025-11-16 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/render.c (DrawImage): Parse MVG "viewbox". Not used for anything yet.

> - coders/jxl.c (ReadJXLImage): Fix oss-fuzz issue 461122808 "graphicsmagick:coder_TIFF_any_fuzzer: Undefined-shift in ReadJXLImage".

> - magick/memory.c (MagickRealloc): MagickRealloc() now behaves like standard realloc(). The dubious responsibility to free the original memory upon allocation failure has now been delegated to the MagickReallocMemory() macro.

> - magick/memory.c (MagickReallocStd): This private function has been removed.

> - magick/memory-private.h: Move declarations of MagickCloneMemory(), MagickFreeAligned(), MagickMallocAligned(), MagickMallocCleared(), MagickRealloc(), and MagickReallocStd() to magick/memory-private.h since they are not intended for general consumption.

> - magick/memory.c, magick/memory-private.h, coders/jp2.c: New managed-memory functions which have added module, function, and line parameters are renamed with "Loc" at end of names. Restore original managed-memory functions, which are a useful replacement for malloc, realloc, free.

2025-11-15 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/tiff.c (ReadTIFFImage): Require that libtiff produce a scanline, strip, or tile, before allocating pixels from pixel cache.

2025-11-14 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/jp2.c (alloc_rlm) (free_rlm) (realloc_rlm): Update to pass file and line information to resource-limited memory calls.

> - magick/memory.c (_SetMagickResourceLimitedMemoryLimitP): Add new private function _SetMagickResourceLimitedMemoryLimitP(), which allows specifying additional limits for allocation size, number of re-allocations, and number of re-allocations with a move. (_MagickAllocateResourceLimitedMemory) (_MagickFreeResourceLimitedMemory) (_MagickReallocateResourceLimitedMemory): Added module, function, and line parameters for the purpose of tracing, and to capture the source location where the allocation was made.

2025-11-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/render.c (DrawImage): Use resource-limited memory allocator when allocating graphic contexts.

2025-11-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - VisualMagick/installer/inc/body.isx (VCRedistNeedsInstall): Do not default to VC_2008. This change will hopefully solve the issue noted by OELS in the discussion thread https://sourceforge.net/p/graphicsmagick/discussion/250737/thread/8812618fc6/ in that the installer attempts to execute vcredist_x64.exe.

> - magick/render.c (PrimitiveInfoRealloc): Uncomment line pertaining to "+100 for headroom" which was commented out on 2025-11-09. Fixes oss-fuzz issue 459618468 "graphicsmagick:coder_MVG_fuzzer: ASSERT: i < number_points".

> - fuzzing/oss-fuzz-build.sh: Disable JBIG support in libtiff because it has been fuzz-tested for quite a few years already and the slow codec leads to false bug reports.

2025-11-10 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/heif.c (ReadHEIFImage): Log more information about the file.

> - magick/magic.c: Add all of the HEIF fourcc identifier values currently known by libheif.

2025-11-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/pnm.c (PNMInteger): Fix Coverity 493469 "Logically dead code".

> - magick/render.c (PrimitiveInfoRealloc): Use the resource-limited memory allocator to allocate/reallocate PrimitiveInfo array. (PrimitiveInfoRealloc): Ensure that PrimitiveInfo text is freed upon a realloc failure.

2025-11-08 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/tiff.c (ReadTIFFImage): Don't expect TIFFReadRGBAImage() to handle more than 4 samples per pixel.

2025-11-07 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/heif.c (apply_security_limits): Apply default max-memory-block-size and max-total-memory limits based on GraphicsMagick resource limits. These may be overridden explicitly. (ReadHEIFImage): Invert the sense of ignore_transformations. Default 'ignore_transformations' to true since otherwise 'identify' can be very slow due to doing much of the work involved with reading the file. The user should pass '-define heif:ignore-transformations=false' if a fully accurate report of image dimensions (and some other information) is required. This is to address the concern raised in issue #75 "Optimize HEIC identify performance by deferring libheif initialization".

2025-11-06 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/pnm.c (ReadPNMImage): Support reading PBM raw (P1), PGM raw (P2), and PPM raw (P3) files which lack a newline character at the end of the last line. This is regardless of the fact that the specification says "There is a newline character at the end of each of these lines.", while also saying "Programs that read this format should be as lenient as possible, accepting anything that looks remotely like a ...". This change supports the lenient clause.

2025-11-05 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

2025-11-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/pict.c: Fix reading/writing PICTs with PixMap rowBytes=[201..250]. ImageMagick issue 7837 "Converting some images to PICT results in files that will crash a classic Mac system" reported by Brian Kendall (https://github.com/ImageMagick/ImageMagick/issues/7837)

> - NEWS.txt: Update the news.

> - www/INSTALL-unix.rst (--enable-magick-compat): Add more warnings/admonitions regarding using --enable-magick-compat.

> - magick/enum_strings.c (StringToChannelType): Accept "Alpha" as a synonym for "Opacity". (StringToCompositeOperator): Accept "CopyAlpha" as a synonym for "CopyOpacity".

2025-11-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/command.c: Add comment for LoadAndCacheImageFile(). (ConvertImageCommand): Support -remap, which is equivalent to -map. This is to improve compatibility with ImageMagick. (MogrifyImage): Support -remap, which is equivalent to -map. This is to improve compatibility with ImageMagick.

> - magick/module_aliases.h (ModuleAliases): Add a mapping from magick "MPRI" to module "MPR". This missing mapping caused the "MPRI" coder to not work for non-module builds. As a result, the 'mogrify' "hald-clut", "map", "mask", and "tile" subcommands were not working.

2025-10-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/heif.c (ReadHEIFImage): Check the heif_image_handle_get_preferred_decoding_colorspace() return code for errors. Should fix oss-fuzz 456486373 "graphicsmagick:enhance_fuzzer: Use-of-uninitialized-value in ReadHEIFImage". Luckily, the impact from this issue seems benign.

2025-10-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

2025-10-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - doc/options.imdoc: Document the HEIF security limits settings, as much as they already are by the libheif code.

> - coders/heif.c (apply_security_limits): Support all of the heif_security_limits options.

> - coders/jpeg.c (WriteJPEGImage): Enforce that JPEG is written as RGB unless a different colorspace was specified.

> - coders/heif.c (apply_security_limits): Support setting some security limits using 'heif' attributes 'max-number-of-tiles', 'max-bayer-pattern-pixels', 'max-items', 'max-components', 'max-iloc-extents-per-item', 'max-size-entity-group', and 'max-children-per-box'. Patterned after what was already done in ImageMagick, except using 'heif' rather than 'heic'. (ReadHEIFImage): Use heif:preserve-colorspace=true or heif:preserve-colorspace=1 to return the image in the original colorspace. This allows an image to be returned in the original YCbCr colorspace rather than RGB.

> - magick/utility.c (MagickAtoULLChk): New private function to decode string to an 'unsigned long long'.

2025-10-27 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/heif.c (ReadHEIFImage): Re-write the HEIF reader (AVIF, HEIC, etc.) to be based on heif_image_get_plane_readonly2(). There is still more to do, such as to provide more user control over the decoding.

2025-10-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/heif.c (apply_security_limits): Start using the heif_context_get_security_limits() interface to update limits. Still limited to a pixels limit for the moment.

> - magick/resize.c (ThumbnailImage): Prevent a divide by zero crash similar to ImageMagick's security advisory GHSA-fh55-q5pj-pxgw "Divide-by-zero in ThumbnailImage via montage -geometry ":" leads to crash".

> - www/INSTALL-windows.rst: Document use of newer (v0.2.13+) libwmf version. Jumping forward 24 years!

> - VisualMagick/wmf: Support compilation of libwmf v0.2.13+ with Visual Studio 2022.

> - wmf: Import https://github.com/caolanm/libwmf files (v0.2.13+) up to commit ec63c9b as of 1/14/25

2025-10-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - README.txt, fuzzing/README.txt, www/INSTALL-windows.rst: Documentation updates.

2025-10-16 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/command.c (MagickCommand): Avoid a crash if command_vector is null. Resolves SourceForge issue #758 "gm benchmark: NULL pointer dereference when "batch" subcommand is passed".

2025-10-15 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - Magick++/drawing-primitives.txt: Update some of the drawing primitives summary.

> - magick/render.c (DrawImage): Add support for "decorate none".

2025-10-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/paint.c (ColorFloodfillImage): Address oss-fuzz 450182424 "graphicsmagick:coder_WMF_fuzzer: Timeout in coder_WMF_fuzzer". The problem is that the floodfill algorithm may not converge if a clip-mask is present. (MatteFloodfillImage): Use resource limited memory for segment stack. Throw an error if a clip-mask is present.

2025-10-08 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/paint.c (ColorFloodfillImage): Disentangle loops and add OpenMP to tile fill color or pattern onto floodplane.

> - coders/wmf.c (lite_font_map): Fix memory leaks when type.mgk is not found. Addresses oss-fuzz 450082723 "graphicsmagick:coder_WMF_fuzzer: Direct-leak in AcquireString".

2025-10-05 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - Magick++/lib/Image.cpp: Translate text with TranslateText() prior to setting an attribute with SetImageAttribute for the "comment" and "label" attributes given that SetImageAttribute() no longer implicitly does that.

> - PerlMagick/Magick.xs: Translate text with TranslateText() prior to setting an attribute with SetImageAttribute for the "comment" and "label" attributes given that SetImageAttribute() no longer implicitly does that.

> - fuzzing/oss-fuzz-build.sh (enable_libwmf): Enable building libwmf in the oss-fuzz build.

2025-10-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - fuzzing/oss-fuzz-build.sh: Add build rules for libwmf. Leave disabled until the oss-fuzz project picks up changes to the Dockerfile.

> - www/INSTALL-windows.rst: Document a new upstream source for libwmf.

2025-10-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

> - www/: Update URLs in documentation to use https where possible, update to re-directed locations, or remove URLs where no viable substitute can be found.

2025-09-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/jp2.c (ReadJP2Image): Assume 3 samples per pixel.

> - fuzzing/utils.cc (MagickState): Also set the PixelsResource limit.

> - coders/jp2.c (ReadJP2Image): Include width and height resource limits, as well as image pixel memory requirements when estimating the Jasper max_samples limit value. (ReadJP2Image): Use PixelsResource rather than MemoryResource when estimating the Jasper max_samples limit value.

2025-09-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

> - www/benchmarks.rst: Provide an example of how to use Hyperfine to benchmark two commands under Linux.

> - www/index.rst: Add/update Coverity and Clang 15 scan-build metrics.

> - coders/braille.c (WriteBRAILLEImage): Eliminate a Clang scan-build gripe regarding access off the end of an array. In practice, this would never happen given that the inputs are already sanitized.

> - coders/xpm.c (ParseColor): Eliminate a Clang scan-build gripe about use of a "garbage value". It is not clear to me that the implementation could actually provoke this issue given the huge amount of successful fuzzer tests.

2025-09-25 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/attribute.c (GenerateEXIFAttribute): Provide a way to accept somewhat incorrect field tags. For the moment, accept incorrect field tags, but provide a way to trace the "fishy" field tags.

> - fuzzing/oss-fuzz-build.sh (enable_de265): Remove libde265 from the oss-fuzz build given that it obviously has never been fuzz tested, does not appear to be maintained, and it is producing the majority of the reports.

2025-09-22 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - www/INSTALL-windows.rst: Provide a summary description of the 3rd party libraries included in the VisualMagick source tree. Include when the source code was last updated by the original authors, or last updated in the Mercurial repository if the code is still being developed.

2025-09-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - VisualMagick/installer/inc/files-dlls.isx: For modern Visual Studio 2019 and later (which is all we support now), default to not bundling any run-time at all. Just assume that the computer already has it! Visual Studio 2015, 2017, 2019, and 2022 all use the same runtime package, and it is a system component.

> - VisualMagick/CMakeLists.txt: Increase WINVER to 0x501 so that configure may be compiled using Visual Studio 2022.

> - VisualMagick/configure/welcome_page.cpp: Update welcome page text so that it fits the screen, and it says that Visual Studio 2019 (or later) is required.

> - VisualMagick/configure/configure.exe: Update pre-compiled configure binary, which is compiled using Visual Studio 2022.

2025-09-19 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/attribute.c (ValidateIfdTagFmt): Extract tag validation code into a reusable function. Improve tracing.

> - coders/tiff.c (AddIFDExifFields): Trace the field type name.

2025-09-14 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

2025-09-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - www/authors.rst: Moved Jaroslav Fojtik and Tobias Mark to former contributor status. Added missing contributions by Jaroslav Fojtik.

> - coders/topol.c (CheckFName): Mask a needless type conversion warning. Whitespace-cleanup and indent according to project conventions.

> - magick/blob.c (BlobToFile): Mask a needless type conversion warning.

> - magick/magic.c (ListMagicInfo): Avoid needless type conversion warnings.

2025-09-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/attribute.c (tag_table): Use bit-fields and OR logic to handle the case where mutiple TIFF tag types are accepted. (GenerateEXIFAttribute): Improve correctness of EXIF tables based on specifications and testing with real-world files. Filter out GPS and EXIF tags which fail tests. Enable use of bsearch().

2025-09-08 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - fuzzing/oss-fuzz-build.sh: Pass -fno-sanitize=undefined when building Jasper and libde265 because they are not prepared to pass such testing.

2025-08-26 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - configure.ac: Capture per-library dependency information from pkg-config data and provide a per-library library dependency list in the final configuration summary. If pkg-config is executed with the --static option, then much more information is revealed by the configuration summary.

2025-08-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - configure.ac: Remove quoting of PNG_LIBS which prevented white-space splitting it into arguments.

2025-08-17 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - configure.ac: Require Autoconf 2.71 (or later) since this version is well supported by modern OS build environments. Extract the library name (e.g. -lpng16) from PNG_LIBS.

2025-08-16 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - configure.ac: When libpng information is provided by pkgconf (pkg-config), use only the library name that pkgconf provides. Addresses SourceForge Patch #85 "Fix detection of png debug".

2025-08-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/utility.c (MagickCreateDirectoryPath): Microsoft Windows mkdir() does not accept a directory mode argument. Fix unused variable warning related to that.

2025-08-05 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/bmp.c, coders/dib.c, magick/draw.c, wand/drawing_wand.c: Quiet warnings noticed under Microsoft Windows with GCC 15.

2025-08-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/png.c (WriteOnePNGImage): Fix sign-compare warnings.

> - coders/svg.c (ReadSVGImage): Defend against what appears to be a failure of xmlStopParser() to cause a stop in development libxml2. Should address oss-fuzz 436118547 "graphicsmagick:coder_SVGZ_fuzzer: Timeout in coder_SVGZ_fuzzer".

> - magick/render.c (DrawImage): Do not dereference null memory memory allocation for 'token' fails. Do not ignore DrawPatternPath() failure. Addresses oss-fuzz 436131990 "graphicsmagick:coder_MVG_fuzzer: Null-dereference WRITE in DrawImage".

2025-08-01 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/png.c (WriteOnePNGImage): Pass colormap index for Palette image when writing bKGD chunk. (WriteOnePNGImage): For Palette image, need to use colormap index rather than a computed grayscale value. This addresses oss-fuzz 435651831 "graphicsmagick:coder_PNG8_fuzzer: Heap-buffer-overflow in WriteOnePNGImage", which became evident after the recent PNG8 work. (WriteOnePNGImage): Replace semi-transparent colors which are very close to the transparent background color, with the transparent background color.

2025-07-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - tests/rwfile.tap: Add tests for PNG24, PNG32, PNG48, and PNG8 PNG subformats.

> - coders/png.c (WriteOnePNGImage): More work on writing PNG8 format. It is decided that PNG8 does indeed mean "Indexed-color with 8-bit sample depth. Binary transparency is supported, but not full-alpha tRNS-type.". As a value add for the user, if the image background color is fully transparent, then its color index is selected to be the transparent color, and transparency is removed from any other non-opaque colors. If no effective means is found to reduce to just one transparent color, opacity is stripped from the output.

2025-07-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

2025-07-22 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/render.c (DrawImage): Primitive and token buffers are based on resource-managed memory.

> - coders/tiff.c (AddIFDExifFields): TIFFTAG_COLORMAP depends on image specific tags, so do not transfer as an EXIF tag. Addresses oss-fuzz 433440617 "graphicsmagick:coder_TIFF_any_fuzzer: Null-dereference READ in _TIFFmemcpy".

2025-07-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/command.c (MogrifyImage): Apply text translations for -comment and -label before calling SetImageAttribute().

> - magick/attribute.c (SetImageAttribute): No longer translate format requests for special format characters (e.g. "%m:%f %wx%h") in attribute text. These translations were applied for the keys "comment" and "label". This is a change to existing API behavior so code depending on this should use TranslateText() to perform the translations prior to calling SetImageAttribute(). It is not entirely known what impact this may have, but including this functionality in SetImageAttribute() was evil given that it is also used for text attributes read from file metadata.

> - magick/analyze.c (GetImageBoundingBox): If image rows or columns is zero, then return default bounds. Addresses oss-fuzz 431500052 "graphicsmagick:coder_SVG_fuzzer: Integer-overflow in GetImageBoundingBox".

2025-07-05 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

> - coders/tiff.c (AddIFDExifFields): TIFFTAG_TRANSFERFUNCTION depends on image specific tags TIFFTAG_BITSPERSAMPLE and TIFFTAG_SAMPLESPERPIXEL, which are already banned. So also ban TIFFTAG_TRANSFERFUNCTION. Addresses oss-fuzz 402570327 "graphicsmagick:coder_TIFF_any_fuzzer: Null-dereference READ in _TIFFmemcpy". (EXPERIMENTAL_EXIF_TAGS): Enable transfer of EXIF tags by default again.

2025-06-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - fuzzing/README.txt: Document how to build de265 using cmake.

> - fuzzing/oss-fuzz-build.sh: Use cmake to build libde265.

2025-06-27 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/tiff.c (AddExifFields): Only handle EXIF and GPS IFDs once. Avoid infinite recursion. Addresses oss-fuzz 405456339 "graphicsmagick:coder_TIFF_any_fuzzer: Stack-overflow in AddIFDExifFields".

2025-06-26 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/png.c (ReadMNGImage): Validate that MNG width or height is non-zero. Addresses oss-fuzz 426843901 "graphicsmagick:coder_MNG_fuzzer: Use-of-uninitialized-value in SetImageEx".

2025-06-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - fuzzing/oss-fuzz-build.sh (enable_de265): Re-enable compilation of libde265 since I am informed that the build issue is fixed now.

> - magick/attribute.c: Update EXIF tag definitions for Exif Version 3.0. Add more information about the tags. Explore use of bsearch() for tag look-up.

2025-06-19 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/attribute.c (tag_table): Capture more EXIF tags, and try to add tag type information for each tag.

> - coders/png.c (WriteOnePNGImage): Cache the output filename before invoking setjmp() and use it when setjmp() returns failure. Hopefully will eliminate oss-fuzz 423668251 "graphicsmagick:coder_PNG24_fuzzer: Null-dereference in WriteOnePNGImage", which I have been unable to reproduce, and for which the stack trace does not resemble recent code.

2025-06-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - m4/acx_pthread.m4: Update to modern syntax.

> - configure.ac: Check and report the ANSI C compiler language standard version and add specific checks for inttypes.h and stdint.h.

> - www/INSTALL-unix.rst: Add notes about a C'99 compiler now being required.

> - www/INSTALL-windows.rst: Add a note that a Microsoft Visual C++ Redistributable package is required.

2025-06-17 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

> - magick/magick_types.h.in, VisualMagick/magick/magick_types.h.in: Reduce to pure C'99 definitions from standard header files. Note that for Visual Studio, Visual Studio 2015 or later is needed in order to support C'99.

> - magick/common.h: Use function attribute __gnu_printf__ rather than __printf__ in function attribute declarations in order to allow C'99 formatters with MINGW64 GCC. New macro MAGICK_FUNC_PRINTF_FORMAT is used for all printf format declarations.

> - configure.ac, magick/magick_types.h.in, etc.: First pass at depending on a C'99 compliant build environment. Not yet tested for Microsoft Windows builds.

2025-06-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/colorspace.c (TransformRGBImage): Validate that CineonLog parameters are in legal ranges. Addresses Coverity 470177 "Division or modulo by float zero".

> - coders/logo.c (EmbeddedImageList): Provide space for "VERTICALRIGHTSHINGLE" string termination.

2025-06-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/utility.c (GetMagickGeometry): Skip resize computions given an area ('@') value of zero. Coverity 470174 "Division or modulo by float zero ".

> - magick/colorspace.c (RGBTransformImage): Validate that CineonLog parameters are in legal ranges. Addresses Coverity 470177, 470183, and 470184 "Division or modulo by float zero".

> - magick/describe.c (DescribeImage): Fix Coverity 470181 "Division or modulo by float zero". This is not likely to happen, but Coverity has no way to know that.

> - magick/render.c (DrawPolygonPrimitive): Coverity 470185 "Logically dead code". There is no actual issue of any consequence.

> - magick/pixel_cache.c (CheckImagePixelLimits): Change limit range check to avoid useless warning about "dead code". Coverity issue 470175 "Logically dead code" and 376900 "Operands don't affect result".

> - coders/rle.c (ReadRLEImage): Verify that integer returned by ReadBlobByte() is not EOF, and is in range of unsigned char before assigning value. Coverity issue 10235 "Negative loop bound".

> - coders/ps3.c (ZLIBEncode2Image): Assure that z_stream is ended in error case. Coverity issue 470178 "Resource leak".

> - coders/pdf.c (ZLIBEncodeImage): Assure that z_stream is ended in error case. Coverity issue 470180 "Resource leak".

> - coders/caption.c (ReadCAPTIONImage): NULL pointers which are no longer needed. Coverity issue 470182 about a memory leak via 'q' appears to be bogus.

> - magick/montage.c (CloneMontageInfo): Assure that memory allocated by GetMontageInfo() is freed, before overwriting the pointer to it with a new allocation. Coverity issues 470173, 470176, and 40179.

> - Makefile.am (coverity-build): Add a 'coverity-build' target, which only does the Coverity build, without submitting it for Coverity analysis.

> - coders/meta.c (ReadMETAImage): WriteBlob() does not perform partial writes so remove that apparent assumption.

2025-06-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/meta.c (formatIPTC): Return immediately upon blob I/O error. (parse8BIM): Return immediately upon blob I/O error. (parse8BIMW): Return immediately upon blob I/O error.

2025-06-10 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - doc/options.imdoc (characters): Document that adding '!' to the geometry specification does change the image aspect ratio if necessary. Addresses GraphicsMagick feature request #48 "-geometry !".

2025-06-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/png.c (WriteOnePNGImage): In error handler, check if image is null prior to attempting to dereference it. This issue is recently introduced. Should resolve oss-fuzz 423668251 "graphicsmagick:coder_PNG24_fuzzer: Null-dereference in WriteOnePNGImage". (WriteOnePNGImage): Fix recently-introduced typo which causes heap buffer overflow. Should resolve oss-fuzz 423417425 "graphicsmagick:coder_PNG8_fuzzer: Heap-buffer-overflow in WriteOnePNGImage".

> - NEWS.txt: Update the news.

> - magick/transform.c (TransformImage): If crop_geometry contains '%', that should not block a full list of image tiles from being generated. Resolves SourceForge issue #717 "-crop does not generate tiles when used with a percentage".

2025-06-08 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

> - coders/png.c (WriteOnePNGImage): Fix broken tRNS table when writing via "PNG8". Warn if pixel transparencies are independent of color palette, since this results in a loss of image quality. Remove output file if an error occurs. Addresses SourceForge issue #755 "Converting to indexed PNG produces invalid file".

2025-06-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/wpg.c (ReadWPGImage): Fix improper usage of MagickReallocateResourceLimitedMemory(). Addresses oss-fuzz 422512441 "graphicsmagick:coder_WPG_fuzzer: Direct-leak in _MagickReallocateResourceLimitedMemory ()".

> - magick/resource.c (DestroyMagickResources): If DEBUG_MAGICK_RESOURCES is enabled, do not assert unless DEBUG_MAGICK_RESOURCES_ASSERT is also enabled. An assertion prevents valgrind from showing us where the leaks are.

> - magick/memory.c: Document that _MagickReallocateResourceLimitedMemory() returns a discrete pointer, similar to realloc(). This means it does not work the same as MagickReallocateMemory().

> - magick/tsd.c (MagickTsdKeyCreate2): Fix GCC -Wcalloc-transposed-args related warning.

2025-06-01 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/svg.c: GetStyleTokens, GetTransformTokens, and SVGProcessTransformString should have a 'const SVGInfo *svg_info' argument rather than a wrong and misleading 'void *context' argument. Fixes a crash which was recently introduced. (ReadSVGImage): Fix some leaked memory resources, which were not leaked while using SVGEndDocument().

> - coders/msl.c (ReadMSLImage): Use libxml2's SAX handlers for the MVG XML-based scripting implementation. These changes are informed by Nick Wellnhofer's changes to ImageMagick's SVG renderer as provided in ImageMagick pull request 7784 at "https://github.com/ImageMagick/ImageMagick/pull/7784/commits/c0405a520b6e0e445dd8f70c1883125d2015c298". This should resolve the MVG portion of SourceForge issue #749 "Use libxml2's SAX handlers". (MSLInfo): Add signature to MSLInfo.

> - coders/svg.c (SVGInfo): Add signature to SVGInfo.

2025-05-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/svg.c (ReadSVGImage): Use libxml2's SAX handlers for the SVG renderer. These changes are informed by Nick Wellnhofer's changes to ImageMagick's SVG renderer as provided in ImageMagick pull request 7784 at "https://github.com/ImageMagick/ImageMagick/pull/7784/commits/c0405a520b6e0e445dd8f70c1883125d2015c298". This should resolve the SVG portion of SourceForge issue #749 "Use libxml2's SAX handlers".

2025-05-27 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - fuzzing/oss-fuzz-build.sh: Now that libpng configure.ac has been fixed upstream, restore 'autoreconf -fiv' step when building libpng.

2025-05-23 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/tiff.c: Add support for libtiff 4.5 TIFFWarningExtR() and TIFFErrorExtR() in order to provide an error handling context per TIFF handle. This improves concurrency and thread safety when multiple libraries are using libtiff within the same process. Resolves SourceForge issue #753 "Support TIFFErrorExtR() in TIFF coder".

2025-05-19 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - scripts/format_c_api_doc.py (proto_pretty): Fix regular expression encoding.

2025-05-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/xpm.c (ParseColor): Avoid truncation of nul character from "g4 ".

> - coders/logo.c (EmbeddedImageList): Avoid truncation of nul character from "VERTICALRIGHTSHINGLE".

> - magick/utility.c (GetPageGeometry): Avoid truncation of nul character from "LETTERSMALL".

> - magick/attribute.c: Avoid truncation of nul character from "ThumbnailPrimaryChromaticities".

> - fuzzing/README.txt: Add notes regarding how to build libjxl for testing.

2025-05-17 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/jxl.c (ReadJXLImage): More effort to free profile memory if JxlDecoderSetBoxBuffer() fails. Addresses oss-fuzz issue "graphicsmagick:coder_TIFF_any_fuzzer: Direct-leak in _MagickReallocateResourceLimitedMemory". Maybe this will fix it.

2025-05-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/magick_types.h.in: Retreat from use of C'99 printf macros. The approach used was not working out, and especially under Microsoft Windows. This means that most changes made yesterday are reverted.

2025-05-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - www/INSTALL-windows.rst: Suggest that GraphicsMagick now requires (or will soon require) at least a working C'99 compiler and headers in order to compile under Microsoft Visual Studio. Visual Studio support will re-start from Visual Studio 2019 rather than the 2008 edition.

> - magick/magick_types.h.in: Use types and declarations from inttypes.h and stddef.h rather than values from the configure script. It seems long enough since 1999 that we can rely on these headers now. ;-)

> - configure.ac: Remove code to compute sized types for current CPU and compiler options.

2025-05-01 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/jxl.c (ReadJXLImage): Free profile memory if JxlDecoderSetBoxBuffer() fails. Addresses oss-fuzz issue "graphicsmagick:coder_TIFF_any_fuzzer: Direct-leak in _MagickReallocateResourceLimitedMemory".

> - fuzzing/oss-fuzz-build.sh: Disable 'harfbuzz' in freetype build in order to avoid compilation error due to use of RTLD_DEFAULT.

2025-03-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

2025-03-26 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/jxl.c (ReadJXLImage): pixel_format.num_channels needs to be 2 for grayscale matte. Addresses oss-fuzz 406320404 "graphicsmagick:coder_JXL_fuzzer: Heap-buffer-overflow in ImportViewPixelArea".

2025-03-17 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/tiff.c (AddIFDExifFields): Check for overflow of computed unsigned value. Code is only active if EXPERIMENTAL_EXIF_TAGS is true. Addresses oss-fuzz 403696329 "graphicsmagick:coder_TIFF_any_fuzzer: Crash in LD_UINT16_HI".

>   Reflow code to match the conventions used by the rest of the project.

2025-03-16 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Updated the news.

> - fuzzing/oss-fuzz-build.sh (CPPFLAGS): Continue to enable EXPERIMENTAL_EXIF_TAGS in oss-fuzz build in order to continue testing writing EXIF in TIFF format.

> - coders/tiff.c (EXPERIMENTAL_EXIF_TAGS): Disable EXPERIMENTAL_EXIF_TAGS by default until libtiff API weaknesses are resolved.

2025-03-02 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/jp2.c (ReadJP2Image): Add casts in order to avoid compilation warnings with old Jasper.

2025-03-01 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - README.txt: Refresh README text.

2025-02-14 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - wand/magick_wand.c: Fix comment indentation issue which was causing some functions to not appear in the formatted documentation. Thanks to Robert C. <robgcs@users.sourceforge.net> for reporting that documentation for some functions were missing.

2025-02-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/nt_base.h: Update notes regarding _MSC_VER values and Visual C++ versions.

> - www/index.rst: Promote the Mercurial repository at https://foss.heptapod.net/graphicsmagick/graphicsmagick since it seems to work better.

2025-02-08 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/magic.c: Make the magic-based format descriptions more detailed and helpful.

2025-02-07 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/magic.c (ListMagicInfo): Include a format description in the output of 'gm convert -list magic'.

2025-02-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - magick/magic.c: Add a Magic description field in order to help identify and document format variants based on header magic. (GetMagickFileFormat): Trace the format description at Coder level.

2025-01-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - coders/png.c (WriteOnePNGImage): Ignore exessively short ICM profiles. Should address oss-fuzz 392927700 "graphicsmagick:coder_PNG64_fuzzer: Heap-buffer-overflow in png_write_iCCP".

> - magick/magic.c (StaticMagic): Identify some more HEIF sub-formats.

> - coders/heif.c (ReadHEIFImage): Request the primary image handle from libheif. Do not throw an error if there is more than one image in the heif. Patch by Kevin Clauson and submitted via SourceForge patch #84 "Patch: use primary image for heic even when have multiple image".

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

> - coders/heif.c (ReadMetadata): Only apply Exif orientation if ignore-transformations is true since HEIF native transformations will handle orientation otherwise. Patch by Kevin Clauson via GraphicsMagick SourceForge patch #83 "Patch: Fix HEIC Orientation Issue".

2025-01-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - wand/magick_wand.c (MagickSetImagePixels): If update image has matte, then promote canvas image to have matte. Support composing individual channels 'R', 'G', 'B', 'A', 'O', 'T', 'C', 'M', 'Y', 'K'. Intended to address SourceForge issue #752 "MagickResizeImage() discarding alpha values".

2025-01-17 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - tests/rwfile.c: Fix another GCC warning.

2025-01-15 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

> - coders/jpeg.c (WriteJPEGImage): Properly invert CMYK components when writing. Addresses SourceForge bug #751 "all CMYK colorspace image become black-white inverted". This bug was introduced in GraphicsMagick 1.3.43. Existing files which appear "corrupt" due to this issue may be salvaged by using the -negate command like "gm convert bad-cmyk.jpg -negate good-cmyk.jpg".

> - www/INSTALL-unix.rst: Document the Docutils version necessary to format reStructuredText files to HTML format.

2025-01-06 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - www/wand/Makefile.am ($(WWWWANDAPIDIR)/%.apirst): Pass an absolute path to format_c_api_doc.py --include-rst argument.

> - magick/magick_endian.c (MagickReverseBits): Function has never been used for anything. Mark it as deprecated. MagickGetBitRevTable(): Function has never been used for anything. Mark it as deprecated.

2025-01-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>

> - NEWS.txt: Update the news.

> - Update copyright year and rotate ChangeLog.

Copyright © GraphicsMagick Group 2002-2026