]> granicus.if.org Git - graphviz/commit
unconditionally use 'deflateBound' when zlib is enabled
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 19 Oct 2022 03:51:44 +0000 (20:51 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Tue, 1 Nov 2022 14:49:12 +0000 (07:49 -0700)
commit29c6db96df974bbc591cb9777f2df950d9517a73
treee914954f4aa2e9982038b35014ab65ca5dc02151
parent19dece0876d84b812a729b3e4edea978d5f439a3
unconditionally use 'deflateBound' when zlib is enabled

When Graphviz was built with support for zlib-based compression, it would only
use `deflateBound` if it was discovered at build time. The `deflateBound` code
path provides a tighter estimate of final compressed size, allowing compression
to minimize its intermediate heap allocations.

The CMake build system did not attempt to discover the presence of
`deflateBound` (config-cmake.in). The Windows build hard coded `deflateBound` as
unavailable (windows/include/config.h). So both these builds would result in a
Graphviz that would use more memory than necessary when writing compressed
output formats.

`deflateBound` arrived in zlib 1.2.0, released on 2003-03-09. It seems safe to
unconditionally assume its existence in 2022. The estimate `deflateBound`
provides has improved in successive releases, with even the latest zlib 1.2.13
released on 2022-10-13 further tightening its estimate. So it is expected that
Graphviz users, with this change, will get lower memory usage during writing
compressed formats, and then lower still as newer zlib releases propagate
through the ecosystem.
CHANGELOG.md
configure.ac
lib/gvc/gvdevice.c
windows/include/config.h