Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] libpng16 from pnggroup:libpng16 #70

Open
wants to merge 75 commits into
base: libpng16
Choose a base branch
from

Commits on Feb 12, 2024

  1. ci: Fix the check of PNG_LIBPNG_VER_BUILD in ci_verify_version.sh

    `PNG_LIBPNG_VER_BUILD` should be zero for public releases and non-zero
    for development versions. The ci_verify_version.sh script should check
    this requirement as such.
    ctruta committed Feb 12, 2024
    Configuration menu
    Copy the full SHA
    fb65436 View commit details
    Browse the repository at this point in the history

Commits on Feb 15, 2024

  1. ci: Pacify shellcheck version 0.8 and apply other linting improvements

    Work around a limitation in the `shellcheck source` directive, which
    does not recognize quotes in shellcheck versions older than 0.9.
    
    Also extend the checks for YAML files over the entire source tree, in
    preparation for the introduction of the GitHub Actions config file.
    ctruta committed Feb 15, 2024
    Configuration menu
    Copy the full SHA
    f74d5ec View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    42c8fcb View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    4191872 View commit details
    Browse the repository at this point in the history
  4. chore: Clean up the spurious uses of sizeof(png_byte); fix the manual

    By definition, `sizeof(png_byte)` is 1.
    
    Remove all the occurences of `sizeof(png_byte)` from the code, and fix
    a related typo in the libpng manual.
    
    Also update the main .editorconfig file to reflect the fixing expected
    by a FIXME note.
    ctruta committed Feb 15, 2024
    Configuration menu
    Copy the full SHA
    0fa3c0f View commit details
    Browse the repository at this point in the history

Commits on Feb 17, 2024

  1. ci: Allow the user to force an in-tree cleanup before verification

    Introduce the environment option CI_FORCE:
     * ci_verify_configure.sh is known to fail if an existing build
       configuration is found in the top-level directory.
       Setting CI_FORCE=1 will run `make distclean` before verification.
     * ci_verify_makefiles.sh cannot be reliably executed if random
       object files are found in the top-level directory.
       Setting CI_FORCE=1 will run `rm *.o *.obj` before verification.
     * ci_verify_cmake.sh is not known at this time to fail for similar
       reasons; but if it does, we will use CI_FORCE to trigger any
       necessary pre-build cleanup.
    ctruta committed Feb 17, 2024
    Configuration menu
    Copy the full SHA
    72c4520 View commit details
    Browse the repository at this point in the history
  2. ci: Fix the reporting in ci_lint.sh

    The variable `CI_LINT_COUNTER` was incremented inside subshells, but
    remained unchanged in the main shell process. The errors detected by
    the internal linters remained unreported by the main script. (Oopsie!)
    
    Besides fixing this defect, considering that only a pass/fail status
    is needed, we are replacing `CI_LINT_COUNTER` with `CI_LINT_STATUS`.
    ctruta committed Feb 17, 2024
    Configuration menu
    Copy the full SHA
    dddaf0c View commit details
    Browse the repository at this point in the history
  3. Fix "ci: Fix the reporting in ci_lint.sh"

    This fixes commit dddaf0c.
    
    The way to reliably `find` executable files is different on BSD, Mac
    and Linux, unfortunately.
    ctruta committed Feb 17, 2024
    Configuration menu
    Copy the full SHA
    6b5a2da View commit details
    Browse the repository at this point in the history

Commits on Feb 19, 2024

  1. build: Fix a CMake build regression introduced in version 1.6.41

    This fixes commit 4edbb4d.
    
    During the move of CMake scripts to the scripts/cmake/ subdirectory,
    some of the workflows have been broken.
    
    Signed-off-by: Cosmin Truta <[email protected]>
    danoli3 authored and ctruta committed Feb 19, 2024
    Configuration menu
    Copy the full SHA
    e7ba9c0 View commit details
    Browse the repository at this point in the history
  2. build: Update the CMake build options PNG_TOOLS and PNG_FRAMEWORK

    Update the PNG_TOOLS option: set it to OFF by default when the
    target is an embedded system, yet still allow it to be overridden.
    
    Update the PNG_FRAMEWORK option: force it back to OFF and print a
    warning if the option was ON but the target is not an Apple system.
    ctruta committed Feb 19, 2024
    Configuration menu
    Copy the full SHA
    aa95dee View commit details
    Browse the repository at this point in the history
  3. build: Improve the search for an AWK processor in the CMake build

    Add nawk to the list of AWK-processing programs that are known to work,
    and show the search result in the CMake log.
    ctruta committed Feb 19, 2024
    Configuration menu
    Copy the full SHA
    d165a20 View commit details
    Browse the repository at this point in the history

Commits on Feb 20, 2024

  1. build: Add an explicit declaration of the AWK variable to configure.ac

    Declare AWK explicitly via the AC_ARG_VAR directive, in order to make
    it "precious", and to include it in the list of influential variables
    at the end of the configure help text.
    
    Rephrase a few comments and config traces.
    
    Finally, regenerate the configure script.
    ctruta committed Feb 20, 2024
    Configuration menu
    Copy the full SHA
    29e31f6 View commit details
    Browse the repository at this point in the history
  2. build: Checking for compiler support of LoongArch LSX should be guarded

    In the configure script, checking whether the LoongArch LSX intrinsics
    are supported by the compiler was done unconditionally, regardless of
    the targetted host platform. Compared to how we support the other SIMD
    platforms and compilers, this is rather unconventional.
    
    We are placing this check under the guard of its own platform, for the
    time being. A full solution, in line with the rest of the configure.ac
    patterns concering SIMD optimizations, is TODO.
    
    We also do an overall cleanup in the SIMD section of configure.ac, and,
    finally, we regenerate the configure script.
    ctruta committed Feb 20, 2024
    Configuration menu
    Copy the full SHA
    14a348d View commit details
    Browse the repository at this point in the history

Commits on Feb 21, 2024

  1. build: Mark the installed libpng headers as system headers in CMake

    Modern compilers can disable the warnings that originate from system
    headers. This change allows them to do so with the libpng headers.
    
    Signed-off-by: Cosmin Truta <[email protected]>
    bebuch authored and ctruta committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    7b88809 View commit details
    Browse the repository at this point in the history

Commits on Feb 22, 2024

  1. pngexif: Import pngexifinfo as an externally-contributed project

    We used this experimental project in the development of the PNG-EXIF
    ("eXIf") specification, back in 2017. The project evolved together
    with the draft specification, which was finalized on 2017-Jun-15 and
    approved by the PNG Group on 2017-Jul-13.
    
    The EXIF specification, outside of the scope of PNG and libpng, is
    quite complex. The libpng implementation cannot grow too much beyond
    performing basic integrity checks on top of serialization. In order
    to create and manipulate PNG-EXIF image files, the use of external
    libraries and tools such as ExifTool is necessary.
    
    Now, with the addition of contrib/pngexif to the libpng repository,
    offline tasks like metadata inspection and linting can be performed
    without importing external dependencies.
    ctruta committed Feb 22, 2024
    Configuration menu
    Copy the full SHA
    ec2e58c View commit details
    Browse the repository at this point in the history
  2. doc: Update the README file

    ctruta committed Feb 22, 2024
    Configuration menu
    Copy the full SHA
    e05ebfb View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    3b9a73e View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    8902310 View commit details
    Browse the repository at this point in the history

Commits on Feb 23, 2024

  1. Configuration menu
    Copy the full SHA
    80691b9 View commit details
    Browse the repository at this point in the history
  2. ci: Add the libpng release tags to the list of exclusions

    The release tags are redundant in the CI process. It is the main branch
    that is always verified.
    ctruta committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    e1fa61d View commit details
    Browse the repository at this point in the history
  3. Release libpng version 1.6.43

    ctruta committed Feb 23, 2024
    Configuration menu
    Copy the full SHA
    ed217e3 View commit details
    Browse the repository at this point in the history

Commits on Feb 24, 2024

  1. Bump version to 1.6.44.git

    ctruta committed Feb 24, 2024
    Configuration menu
    Copy the full SHA
    f1848a3 View commit details
    Browse the repository at this point in the history

Commits on May 31, 2024

  1. SECURITY: disable build of filter_neon.S on arm

    This fixes the bug #505
    "libpng does not support PAC/BTI on aarch64 targets" which arises
    because the build mechanisms (both cmake and configure) assemble
    arm/filter_neon.S even though it ends up completely empty.  The empty
    file effectively poisons the so that the PAC/BTI support gets disabled.
    
    The fix is minimal; it simply removes arm/filter_neon.S from the list of
    sources included in the 64-bit ARM builds build.  Note that this was
    already done in cmake for MSVC - it's not clear whether this change was
    a partial fix for the same issue.
    
    This version of the fix ONLY affects aarch64 (arm64) builds; 32-bit ARM
    systems can still invoke the assembler if required and, indeed, there
    should be no change whatsover to those builds.
    
    The assembler code could not be used on 64-bit systems in any case so
    in practice there is no material change to 64-bit builds either.
    
    TESTING: pull the changes then type "autoreconf" if using configure (not
    required for cmake).
    
    TESTS: cmake has not been tested because cross-builds with cmake
    currently fail to find the zlib installation from the cmake system root
    path.  The following has been tested with configure cross builds:
    
    armv7-linux-gnueabi [no neon support]
    armv7a-linux-gnueabi [no neon support]
    armv7a-hardfloat-linux-gnueabi [neon support not enabled]
    armv7a-hardfloat-linux-gnueabi -mfpu=neon [uses intrinics]
    armv7a-hardfloat-linux-gnueabi -mfpu=neon
            -DPNG_ARM_NEON_IMPLEMENTATION=2 [uses assembler]
    aarch64-linux-gnu [uses intrinsics]
    aarch64-linux-gnu -DPNG_ARM_NEON_OPT=0 [neon support disabled]
    
    Signed-off-by: John Bowler <[email protected]>
    jbowler committed May 31, 2024
    Configuration menu
    Copy the full SHA
    ceed2a3 View commit details
    Browse the repository at this point in the history

Commits on Jun 15, 2024

  1. arm: Remove obsolete assembler implementation filter_neon.S

    This file contains hand-coded assembler implementations of the filter
    functions for 32-bit Arm platforms.  These are only used when the
    compiler doesn't support neon intrinsics (added to GCC 4.3 in 2008) or
    is exactly GCC 4.5.4 (released 2012), both of which are sufficiently
    unlikely to be true that it's fair to say the assembler is no longer
    used.
    
    This commit deletes filter_neon.S and removes the now obsolete
    preprocessor logic in pngpriv.h.
    
    Signed-off-by: Bill Roberts <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    rossburton authored and ctruta committed Jun 15, 2024
    Configuration menu
    Copy the full SHA
    9e53875 View commit details
    Browse the repository at this point in the history

Commits on Jun 17, 2024

  1. arm: Add a placeholder file in lieu of the former filter_neon.S

    In the previous commit 9e53875
    we removed the obsolete assembler implementation `filter_neon.S`.
    
    In this commit we add a stand-in for the original file, restoring
    the original source tree structure, for the benefit of continuing
    hassle-free libpng source upgrades in the 1.6.x line.
    ctruta committed Jun 17, 2024
    Configuration menu
    Copy the full SHA
    e4a31f0 View commit details
    Browse the repository at this point in the history

Commits on Sep 3, 2024

  1. ci: Fix the verification of the msys2 toolchain on AppVeyor CI

    Initialize the arch-specific MSYSTEM environment variable, to ensure
    that msys2 bash picks up and executes /etc/profile correctly.
    
    Install and use the host-specific cmake and ninja, to ensure that
    msys2 cmake picks up the host-specific zlib build correctly.
    ctruta committed Sep 3, 2024
    Configuration menu
    Copy the full SHA
    532fec0 View commit details
    Browse the repository at this point in the history

Commits on Sep 4, 2024

  1. cmake: Fix the handling of PNG_HARDWARE_OPTIMIZATIONS on FreeBSD/amd64

    Because of a missing "amd64" string (in lowercase) in a regex match,
    the CMake build was unable to pick up the PNG_HARDWARE_OPTIMIZATIONS
    flag on FreeBSD/amd64 (and possibly other amd64 systems as well).
    
    Rename the target arch variable from TARGET_ARCH to a more idiomatic
    PNG_TARGET_ARCHITECTURE, and set it to an always-lowercase string.
    The follow-on checks are now simpler and easier to get right.
    ctruta committed Sep 4, 2024
    Configuration menu
    Copy the full SHA
    33ef48b View commit details
    Browse the repository at this point in the history

Commits on Sep 5, 2024

  1. cmake: Honor CMAKE_SYSROOT if set

    Signed-off-by: Cosmin Truta <[email protected]>
    ericriff authored and ctruta committed Sep 5, 2024
    Configuration menu
    Copy the full SHA
    43d6ad3 View commit details
    Browse the repository at this point in the history
  2. ci: Add the targets/ subdirectory to facilitate cross-platform testing

    Considering that a non-trivial amount of libpng code is arch-specific,
    we should perform cross-platform builds (with cross-platform toolchains)
    and test runs (on emulated architectures) in our routine verification.
    
    The content of ci/targets/ shall consist of target description files,
    written in the standard shell language. These files may be source'd as
    needed, before running the verification scripts ci/ci_verify_*.sh.
    
    Here is the initial list of target systems:
    Android, Cygwin, FreeBSD, Linux, MSDOS, Windows.
    
    And here is the initial list of target architectures:
    ARM, MIPS, PowerPC, RISC-V, x86.
    ctruta committed Sep 5, 2024
    Configuration menu
    Copy the full SHA
    7e18d14 View commit details
    Browse the repository at this point in the history

Commits on Sep 7, 2024

  1. fix: Remove cHRM check to accomodate ACES AP1

    ACES AP1 has a red endpoint with a negative Z, this triggers the checks
    in libpng that ensure that x, y and z (chromaticities) are all >=0.
    This removes the checks on the sign of the chromaticities since it is
    valid to use negative values for any of them and converts the "internal"
    error code return to external (because the internal cases correspond to
    negative x, y or z.)
    
    Reviewed-by: Cosmin Truta <[email protected]>
    Signed-off-by: John Bowler <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    jbowler authored and ctruta committed Sep 7, 2024
    Configuration menu
    Copy the full SHA
    20f819c View commit details
    Browse the repository at this point in the history

Commits on Sep 8, 2024

  1. fix: Restore STDERR in pngtest.c

    In "test: Add consistency checks for the PNG_LIBPNG_VER* number" [0] the
    `STDERR` macro was moved from outside an `ifdef` to inside an `ifdef`.
    This broke the code in the `else` of this `ifdef` which also uses the
    `STDERR` macro. Move `STDERR` back to where it was to avoid compile
    errors in the `else` case.
    
    [0] cc8006c
    
    Fixes: #560
    Reviewed-by: Cosmin Truta <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    bungeman authored and ctruta committed Sep 8, 2024
    Configuration menu
    Copy the full SHA
    40878fd View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    2220865 View commit details
    Browse the repository at this point in the history
  3. chore: Delete contrib/tools/chkfmt.sh

    Going forward, we will continue developing and using ci/ci_lint.sh
    ctruta committed Sep 8, 2024
    Configuration menu
    Copy the full SHA
    fcdec9c View commit details
    Browse the repository at this point in the history
  4. ci: Simplify the Travis CI configuration matrix

    Going forward, we will continue to verify the cmake build and the
    configure build with the hardware optimizations enabled by default,
    and the makefile build with the hardware optimizations disabled by
    default.
    
    The Travis CI configuration file is simpler, and, more importantly,
    the Travis CI verification process will be shorter and cheaper.
    ctruta committed Sep 8, 2024
    Configuration menu
    Copy the full SHA
    53a7f4e View commit details
    Browse the repository at this point in the history
  5. build: Add a CMake config file compatible with the FindPNG module

    Co-authored-by: Cosmin Truta <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    bebuch and ctruta committed Sep 8, 2024
    Configuration menu
    Copy the full SHA
    0e204b7 View commit details
    Browse the repository at this point in the history

Commits on Sep 9, 2024

  1. oss-fuzz: Add fuzzing targets for simplified READ API

    New target added to libpng_read_fuzzer.cc for simplified READ API.
    tyler92 authored and ctruta committed Sep 9, 2024
    Configuration menu
    Copy the full SHA
    68ba4f1 View commit details
    Browse the repository at this point in the history

Commits on Sep 10, 2024

  1. Configuration menu
    Copy the full SHA
    1964d56 View commit details
    Browse the repository at this point in the history
  2. cmake: Fix an error in the declaration of target include directories

    Properly declare target include directories for generated includes.
    Previously the non targeted `include_directories()` was used, which
    had issue when using the `png_static` target in a submodule.
    
    Signed-off-by: Cosmin Truta <[email protected]>
    Green-Sky authored and ctruta committed Sep 10, 2024
    Configuration menu
    Copy the full SHA
    1d1cc9a View commit details
    Browse the repository at this point in the history
  3. Revert "cmake: Fix an error in the declaration of target include dire…

    …ctories"
    
    This reverts commit 1d1cc9a.
    
    The verification has failed. (Oopsie!)
    ctruta committed Sep 10, 2024
    Configuration menu
    Copy the full SHA
    843dbb7 View commit details
    Browse the repository at this point in the history
  4. cmake: Fix an error in the declaration of target include directories

    Properly declare target include directories for generated includes.
    Previously the non targeted `include_directories()` was used, which
    had issue when using the `png_static` target in a submodule.
    
    Signed-off-by: Cosmin Truta <[email protected]>
    Green-Sky authored and ctruta committed Sep 10, 2024
    Configuration menu
    Copy the full SHA
    8cc22a8 View commit details
    Browse the repository at this point in the history

Commits on Sep 12, 2024

  1. fix: Prevent overflow in chromaticity calculations

    In `png_xy_from_XYZ` X+Y+Z was calculated without checking for overflow.
    This fixes that by moving the correct code from `png_XYZ_normalize` into
    a static function which is now used from `png_xy_from_XYZ`.
    
    Reviewed-by: Cosmin Truta <[email protected]>
    Signed-off-by: John Bowler <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    jbowler authored and ctruta committed Sep 12, 2024
    Configuration menu
    Copy the full SHA
    5a7e87f View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    3117b5f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    88ab4f5 View commit details
    Browse the repository at this point in the history
  4. Release libpng version 1.6.44

    ctruta committed Sep 12, 2024
    Configuration menu
    Copy the full SHA
    f5e92d7 View commit details
    Browse the repository at this point in the history

Commits on Sep 14, 2024

  1. Bump version to 1.6.45.git

    ctruta committed Sep 14, 2024
    Configuration menu
    Copy the full SHA
    ef153d5 View commit details
    Browse the repository at this point in the history
  2. oss-fuzz: Transfer to an external repo and remove from this repo

    A new repository named "pngfuzz", dedicated to fuzz testing PNG
    processing software in general and libpng in particular, has been
    created:
    
    https://github.com/pnggroup/pngfuzz
    
    Signed-off-by: Cosmin Truta <[email protected]>
    ctruta committed Sep 14, 2024
    Configuration menu
    Copy the full SHA
    b7276ec View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    e3c7b26 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    222dd7c View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    c0f3dd4 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    68d7ce8 View commit details
    Browse the repository at this point in the history

Commits on Sep 15, 2024

  1. [libpng16] chore: Reorganize and update .gitignore

    Ignore the files and the directories that are typically produced by
    text editors, development tools, development environments, etc.
    
    This is a cherry-pick of commit 050aa7b
    from branch 'libpng18'.
    ctruta committed Sep 15, 2024
    Configuration menu
    Copy the full SHA
    18ab7d0 View commit details
    Browse the repository at this point in the history

Commits on Sep 17, 2024

  1. [libpng16] chore: Set the indent_size fields in .editorconfig

    Also add an .editorconfig-checker.json file. We need to instruct the
    editorconfig-checker program to skip the checks for the indent size.
    (As of this commit time, editorconfig-checker is too rigid to recognize
    "smart indentations".)
    
    This is a cherry-pick of commit 67c99f7
    from branch 'libpng18'.
    
    Co-authored-by: John Bowler <[email protected]>
    Signed-off-by: John Bowler <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    ctruta and jbowler committed Sep 17, 2024
    Configuration menu
    Copy the full SHA
    cb08862 View commit details
    Browse the repository at this point in the history
  2. [libpng16] ci: Update ci_lint.sh to recognize .editorconfig-checker.json

    As the editorconfig-checker program is transitioning from using
    the .ecrc config file to the .editorconfig-checker.json config file,
    the older program versions do not recognize the new config file name.
    
    Update ci_lint.sh to instruct editorconfig-checker to pick up its
    configuration from the new config file name, regardless of the program
    version.
    
    Also update ci_lint.sh to instruct yamllint to check all *.json files,
    including .editorconfig-checker.json.
    
    This is a cherry-pick of commit 77f8833
    from branch 'libpng18'.
    ctruta committed Sep 17, 2024
    Configuration menu
    Copy the full SHA
    bcb3124 View commit details
    Browse the repository at this point in the history

Commits on Sep 19, 2024

  1. Revert "oss-fuzz: Transfer to an external repo and remove from this r…

    …epo"
    
    This reverts commit b7276ec.
    
    Although the brand new pngfuzz repo is coming up next, it turned out
    that the deletion of contrib/oss-fuzz/ from the 'libpng16' branch was
    premature. (Oopsie!)
    
    Signed-off-by: Cosmin Truta <[email protected]>
    ctruta committed Sep 19, 2024
    Configuration menu
    Copy the full SHA
    cd5e582 View commit details
    Browse the repository at this point in the history
  2. Revert "oss-fuzz: Update the README file, the Docker file and the bui…

    …ld script"
    
    This reverts commit 3117b5f.
    
    A regression was introduced. (Oopsie!)
    
    Signed-off-by: Cosmin Truta <[email protected]>
    ctruta committed Sep 19, 2024
    Configuration menu
    Copy the full SHA
    529e69e View commit details
    Browse the repository at this point in the history

Commits on Sep 20, 2024

  1. [libpng16] test: Fix "make check" in all branches beyond 'libpng16'

    This corrects the checks to that libpng 10800 does not turn on the
    enhanced transform checks in either pngvalid or pngstest.  The correct
    fix is to change the 10700 code for comments which explain what aspect
    or aspects of the transforms are broken (ideally) or at least state that
    the transforms are broken.
    
    This is a cherry-pick of commit aec888a
    from branch 'libpng18'.
    
    Reviewed-by: Cosmin Truta <[email protected]>
    Signed-off-by: John Bowler <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    jbowler authored and ctruta committed Sep 20, 2024
    Configuration menu
    Copy the full SHA
    b8a0a54 View commit details
    Browse the repository at this point in the history

Commits on Sep 24, 2024

  1. [libpng16] projects: Adjust settings in the Visual Studio project

    Adjust the warning levels across the entire solution in order to tidy
    up the build log.
    
    Also remove the vestigial macro definition _USRDLL and add the missing
    macro definition _CRT_SECURE_NO_WARNINGS.
    
    This is a cherry-pick of commit 719705a
    from branch 'libpng18'.
    ctruta committed Sep 24, 2024
    Configuration menu
    Copy the full SHA
    b3bcbf9 View commit details
    Browse the repository at this point in the history
  2. [libpng16] projects: Add a build launcher to the Visual Studio project

    Add projects/vstudio/build.bat, a wrapper for `devenv [...] /build`.
    
    This is a cherry-pick of commit f1c01b5
    from branch 'libpng18'.
    ctruta committed Sep 24, 2024
    Configuration menu
    Copy the full SHA
    d161ce6 View commit details
    Browse the repository at this point in the history
  3. [libpng16] chore: Update .gitignore

    Ignore artifacts produced by IDEs such as Embarcadero RAD Studio,
    JetBrains Fleet, Qt Creator, and possibly others.
    
    Also update the list of artifacts produced by C/C++ workflows and
    CMake workflows in Microsoft Visual Studio and Qt Creator.
    
    This is a cherry-pick of commit 10c76f3
    from branch 'libpng18'.
    ctruta committed Sep 24, 2024
    Configuration menu
    Copy the full SHA
    f3a45ac View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    65cd5fa View commit details
    Browse the repository at this point in the history

Commits on Sep 25, 2024

  1. [libpng16] mips: Eliminate use of non-ISO-C90 features

    The MIPS MSA code contains // comments and the use of an "asm"
    directive, neither of which are part of ISO-C90.  This removes the //
    comments and converts asm to __asm__, which GCC allows.
    
    The code compiles but maintenance is required; it's not clear it will
    work on anything other than one specific compiler/isa combination.  It
    should be rewritten using intrinsics, not assembler; as it stands it is
    a security risk.
    
    This is a cherry-pick of commit bd39ebb
    from branch 'libpng18'.
    
    Co-authored-by: Cosmin Truta <[email protected]>
    Reviewed-by: Chris Blume <[email protected]>
    Signed-off-by: John Bowler <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    jbowler and ctruta committed Sep 25, 2024
    Configuration menu
    Copy the full SHA
    0a27b48 View commit details
    Browse the repository at this point in the history

Commits on Sep 27, 2024

  1. fix: Adjust colorspace calculations for ACES AP0

    The subtracts in PNG_XYZ_from_xy are producing integer overflow with
    some valid but extreme xy values.  This re-introduces the previous
    checks, but with less limited bounds; sufficient to accomodate the
    ACEScg end points (ACES AP1), but not for the ACES AP0 end points.
    Those were not working anyway because libpng reads the cHRM parameters
    as unsigned values, so they must always be at least 0.
    
    A better solution requires recognizing reasonable negative values (ones
    which violate the current spec) and allowing them too, at least on read.
    
    Reviewed-by: Cosmin Truta <[email protected]>
    Signed-off-by: John Bowler <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    jbowler authored and ctruta committed Sep 27, 2024
    Configuration menu
    Copy the full SHA
    d288a1d View commit details
    Browse the repository at this point in the history
  2. [libpng16] arm: Use png_aligncastconst for an upcast in Neon intrin…

    …sics
    
    This changes the arm/palette_neon_intrinsics.c code from using a bare
    cast to using the portable macro `png_aligncastconst`.  This removes
    the `-Wcast-align` warning.
    
    The cast is safe because the pointer was allocated by `malloc(1024)`,
    and `malloc` is required to return a pointer with sufficient alignment
    for anything the allocation can accomodate.
    
    Nevertheless, this is a quick and dirty fix; the use of `png_bytep` in
    the `png_struct` declaration of the pointer is machine-specific.  Other
    architectures may need different types and, consequently, the only type
    which is portable to other companies' CPUs is `(void*)`.
    
    This is a cherry-pick of commit a604b12
    from branch 'libpng18'.
    
    Reviewed-by: Cosmin Truta <[email protected]>
    Signed-off-by: John Bowler <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    jbowler authored and ctruta committed Sep 27, 2024
    Configuration menu
    Copy the full SHA
    d3cf9b6 View commit details
    Browse the repository at this point in the history

Commits on Oct 6, 2024

  1. [libpng16] build: Raise the minimum required CMake version to 3.14

    Start using the features guaranteed to be available in CMake 3.14.
    Specifically, use the ability of `find_package(ZLIB)` to pick up zlib
    from the ZLIB_ROOT variable (if given).
    
    This is a cherry-pick of commit 00343a7
    from branch 'libpng18'.
    ctruta committed Oct 6, 2024
    Configuration menu
    Copy the full SHA
    642b5d8 View commit details
    Browse the repository at this point in the history
  2. [libpng16] test: Tidy up the logging of test program arguments in CTest

    This is a cherry-pick of commit 2e416c6
    from branch 'libpng18'.
    ctruta committed Oct 6, 2024
    Configuration menu
    Copy the full SHA
    9ee8238 View commit details
    Browse the repository at this point in the history
  3. [libpng16] ci: Use modern CMake command options in ci_verify_cmake.sh

    Due to raising the minimum CMake version to 3.14, we can now run the
    CMake build verification (ci_verify_cmake.sh) from the libpng source
    dir, just as in the other scripts (ci_verify_*.sh). This is possible
    thanks to the modern CMake command options `cmake -B` and `cmake -S`.
    
    We can finally simplify the implementation of ci_verify_cmake.sh by
    removing a code complication that was annoying, and yet, necessary in
    peculiar Bash-on-Windows setups.
    
    Fun fact:
    CMake version 3.14 was released on 2019-03-14. Reportedly, on purpose!
    
    This is a cherry-pick of commit 558dfbb
    from branch 'libpng18'.
    ctruta committed Oct 6, 2024
    Configuration menu
    Copy the full SHA
    1bf304c View commit details
    Browse the repository at this point in the history

Commits on Oct 7, 2024

  1. [libpng16] ci: Verification should pass regardless of autoconf artifacts

    Allow ci_verify_configure.sh to pass regardless whether the configure
    script and the associated configure control files are present.
    This is necessary for the branches newer than 'libpng16', where these
    artifacts are no longer auto-generated by default.
    
    This is a cherry-pick of commit 09ec97e
    from branch 'libpng18'.
    ctruta committed Oct 7, 2024
    Configuration menu
    Copy the full SHA
    7c90057 View commit details
    Browse the repository at this point in the history

Commits on Oct 10, 2024

  1. [libpng16] fix: Correct the function png_fp_sub in png.c

    The code erroneously evaluated `addend0+addend1` in the case where
    `addend1` is less than zero.  The function is meant to subtract the
    second argument from the first.
    
    This is a cherry-pick of commit 79fd6d1
    from branch 'libpng18'.
    
    Reviewed-by: Cosmin Truta <[email protected]>
    Signed-off-by: John Bowler <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    jbowler authored and ctruta committed Oct 10, 2024
    Configuration menu
    Copy the full SHA
    f14d5fc View commit details
    Browse the repository at this point in the history

Commits on Oct 11, 2024

  1. [libpng16] chore: Clean up the leading blank lines from all source files

    The leading blank lines are apparently an artefact of an older source
    control system.  They are not required and they look like accidents,
    because starting a source file with a blank line is not a regular habit
    of software developers nowadays.
    
    This is a cherry-pick of commit 37cc20a
    from branch 'libpng18'.
    
    Signed-off-by: John Bowler <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    jbowler authored and ctruta committed Oct 11, 2024
    Configuration menu
    Copy the full SHA
    d7d950e View commit details
    Browse the repository at this point in the history

Commits on Oct 12, 2024

  1. [libpng16] style: Add a cmake-format config file and satisfy cmake-lint

    Introduce CMake file linting, based on the cmakelang project by
    Josh Bialkowski (@cheshirekow).
    
    Fix various style issues in the CMake files:
     * Add the missing copyright header to PNGConfig.cmake.
     * Resolve a "missing docstring" warning raised by cmake-lint.
     * Rewrite all docstrings in the style of CMake's own documentation.
     * Fix whitespace inconsistencies.
    
    References:
     * https://pypi.org/project/cmakelang
     * https://github.com/cheshirekow/cmake_format
    
    This is a cherry-pick of commit c317fe3
    from branch 'libpng18'.
    ctruta committed Oct 12, 2024
    Configuration menu
    Copy the full SHA
    a7a8fae View commit details
    Browse the repository at this point in the history
  2. [libpng16] style: Resolve the remaining warnings issued by cmake-lint

    Resolve the indentation issues raised by cmake-lint on a fragment of
    CMakeLists.txt that no longer exists in branch 'libpng18'.
    ctruta committed Oct 12, 2024
    Configuration menu
    Copy the full SHA
    8b1d489 View commit details
    Browse the repository at this point in the history

Commits on Oct 13, 2024

  1. fix: Avoid integer overflows in function png_xy_from_XYZ

    This is a cherry-picked of commit f45531c
    from branch 'libpng18'.
    
    Reviewed-by: Cosmin Truta <[email protected]>
    Signed-off-by: John Bowler <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    jbowler authored and ctruta committed Oct 13, 2024
    Configuration menu
    Copy the full SHA
    65470ac View commit details
    Browse the repository at this point in the history

Commits on Oct 15, 2024

  1. [libpng16] test: Add a compile-time check in pngimage.c to avoid a fa…

    …ilure
    
    Disable the check on `interlace_method` inside function `compare_read`
    in pngimage.c, if WRITE_INTERLACING is not supported.
    
    If interlaced encoding is disabled inside libpng, the encoded images
    are non-interlaced silently and unconditionally.  This commit updates
    the image comparison to skip the interlace check in the resultant
    image; other behavior is still checked.
    
    This is a cherry-pick of commit d9f13d8
    from branch 'libpng18'.
    
    Reviewed-by: Cosmin Truta <[email protected]>
    Signed-off-by: John Bowler <[email protected]>
    Signed-off-by: Cosmin Truta <[email protected]>
    jbowler authored and ctruta committed Oct 15, 2024
    Configuration menu
    Copy the full SHA
    76e5ec2 View commit details
    Browse the repository at this point in the history

Commits on Oct 17, 2024

  1. [libpng16] refactor: Deduplicate the interlace arrays png_pass_*

    Move the definitions of interlace arrays to the top of their respective
    translation units, to reduce their repeated copying in various places of
    the codebase.
    
    TODO:
    As they still exist in three copies, in pngpread.c, in pngrutil.c, and
    in pngwutil.c, they should all be further moved to a common place.
    
    This is a cherry-pick of commit 620a2b7
    from branch 'libpng18'.
    ctruta committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    d9d70e6 View commit details
    Browse the repository at this point in the history

Commits on Oct 18, 2024

  1. [libpng16] build: Rename a private function to benefit C++Builder

    Embarcadero's compilers, old (Borland-based) and new (Clang-based),
    do have full support for Standard C. The Clang-based compiler is
    claiming, through the macro __STDC_VERSION__, to support C99 and C11,
    whereas the Borland-based compiler supports ANSI C, as it has for
    decades.
    
    However, their run-time library is exposing global functions beyond
    the scope of Standard C, for backwards compatibility with the older
    Borland products. One of these functions is `randomize`, which clashes
    with a function inside pngvalid.c that incidentally has the same name.
    
    Building libpng in "Strict ANSI C" mode, in which all Borland-specific
    globals are hidden (e.g. via `bcc32 -A`), would have been a workable
    solution for the Borland-based ANSI C compiler, but no such solution
    appears to exist for the Clang-based C90/C99/C11 compiler.
    
    Fortunately, renaming a private function inside a test program is a
    cost-free alternative fix.
    
    This is a cherry-pick of commit 6184164
    from branch 'libpng18'.
    ctruta committed Oct 18, 2024
    Configuration menu
    Copy the full SHA
    c1cc0f3 View commit details
    Browse the repository at this point in the history