Development & Build System
- Require C++17 standard: Modernize the codebase and leverage modern C++ features for safer and more maintainable code.
- Improve build systems and GitHub Actions: Renovate the build infrastructure to support multiple build systems (CMake, Meson, autotools) and enhance CI/CD workflows for better reliability and test coverage.
Code Quality & Fixes
- Add argument checks: Implement stricter validation of command-line arguments to prevent undefined behavior and improve user feedback.
- Replace
asprintfwith a portable solution: Replace a non-standard glibc function with a cross-platform alternative, improving compatibility with different operating systems (e.g., Windows, BSD). - Fix memory leaks: Resolve several identified memory leaks, including:
- An issue in
unite_templates()where incorrect reference counting caused memory to not be freed. - Ensuring proper destruction of image data (
pixl) in error paths.
- An issue in
- Fix forcing DPI (
-Dswitch): Correct a bug where the-Dcommand-line option to set the DPI for images without embedded DPI information was not functioning properly. - Fix undefined behavior: Resolve an undefined bit-shifting operation in the arithmetic coding component (
jbig2arith.cc), ensuring deterministic and correct behavior across all compilers and architectures.
Maintenance & Cleanup
- Improve resource management: Free resources even when running in non-symbol mode, preventing leaks in all execution paths.