Merge tag 'v1.6.53' into branch 'libpng18' into develop
diff --git a/AUTHORS.md b/AUTHORS.md
index a205024..ac60ee9 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -5,6 +5,7 @@
Authors, for copyright and licensing purposes.
* Adam Richter
+ * Alexander Smorkalov
* Andreas Dilger
* Chris Blume
* Cosmin Truta
@@ -59,7 +60,7 @@
* Samsung Group
- Filip Wasil
* SpacemiT Hangzhou Technology, Co.
- - Liang Junzhao
+ - Liang Junzhao (梁俊钊)
The build projects, the build scripts, the test scripts, and other
files in the "projects", "scripts" and "tests" directories, have
diff --git a/CHANGES b/CHANGES
index 527dc76..f89e105 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6315,6 +6315,12 @@
Added allocation failure fuzzing to oss-fuzz.
(Contributed by Philippe Antoine.)
+Version 1.6.53 [December 5, 2025]
+ Fixed a build failure on RISC-V RVV caused by a misspelled intrinsic.
+ (Contributed by Alexander Smorkalov.)
+ Fixed a build failure with CMake 4.1 or newer, on Windows, when using
+ Visual C++ without MASM installed.
+
Version 2.0.0 [TODO]
Send comments/corrections/commendations to png-mng-implement at lists.sf.net.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7b3e52e..a8b4a23 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,7 +27,7 @@
project(libpng
VERSION ${PNGLIB_VERSION}
- LANGUAGES C ASM)
+ LANGUAGES C)
include(CheckCSourceCompiles)
include(CheckLibraryExists)
diff --git a/manuals/libpng-manual.txt b/manuals/libpng-manual.txt
index 1946f8c..3ae2bfe 100644
--- a/manuals/libpng-manual.txt
+++ b/manuals/libpng-manual.txt
@@ -9,7 +9,7 @@
Based on:
- libpng version 1.6.36, December 2018, through 1.6.52 - December 2025
+ libpng version 1.6.36, December 2018, through 1.6.53 - December 2025
Updated and distributed by Cosmin Truta
Copyright (c) 2018-2025 Cosmin Truta
diff --git a/manuals/libpng.3 b/manuals/libpng.3
index c406dcc..2fa8bdb 100644
--- a/manuals/libpng.3
+++ b/manuals/libpng.3
@@ -1,4 +1,4 @@
-.TH LIBPNG 3 "December 3, 2025"
+.TH LIBPNG 3 "December 5, 2025"
.SH NAME
libpng \- Portable Network Graphics (PNG) Reference Library 1.8.0.git
@@ -516,7 +516,7 @@
Based on:
- libpng version 1.6.36, December 2018, through 1.6.52 - December 2025
+ libpng version 1.6.36, December 2018, through 1.6.53 - December 2025
Updated and distributed by Cosmin Truta
Copyright (c) 2018-2025 Cosmin Truta
diff --git a/manuals/png.5 b/manuals/png.5
index fbb88ab..ba1a4d5 100644
--- a/manuals/png.5
+++ b/manuals/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "December 3, 2025"
+.TH PNG 5 "December 5, 2025"
.SH NAME
png \- Portable Network Graphics (PNG) format
diff --git a/png.h b/png.h
index 35be19c..ccd3a6b 100644
--- a/png.h
+++ b/png.h
@@ -14,7 +14,7 @@
* libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger
* libpng versions 0.97, January 1998, through 1.6.35, July 2018:
* Glenn Randers-Pehrson
- * libpng versions 1.6.36, December 2018, through 1.6.52, December 2025:
+ * libpng versions 1.6.36, December 2018, through 1.6.53, December 2025:
* Cosmin Truta
* See also "Contributing Authors", below.
*/
diff --git a/pngread.c b/pngread.c
index eb2cccc..8b4218b 100644
--- a/pngread.c
+++ b/pngread.c
@@ -3366,7 +3366,7 @@
/* Clamp to the valid range to defend against
* unforeseen cases where the data might be sRGB
* instead of linear premultiplied.
- * (Belt-and-suspenders for GitHub Issue #764.)
+ * (Belt-and-suspenders for CVE-2025-66293.)
*/
if (component > 255*65535)
component = 255*65535;
diff --git a/riscv/filter_rvv_intrinsics.c b/riscv/filter_rvv_intrinsics.c
index d91f80f..7076276 100644
--- a/riscv/filter_rvv_intrinsics.c
+++ b/riscv/filter_rvv_intrinsics.c
@@ -2,9 +2,11 @@
*
* Copyright (c) 2023 Google LLC
* Written by Manfred SCHLAEGL, 2022
- * Dragoș Tiselice <dtiselice@google.com>, May 2023.
- * Filip Wasil <f.wasil@samsung.com>, March 2025.
- * Liang Junzhao <junzhao.liang@spacemit.com>, November 2025.
+ * Revised by:
+ * - Dragoș Tiselice <dtiselice@google.com>, May 2023
+ * - Filip Wasil <f.wasil@samsung.com>, March 2025
+ * - Liang Junzhao <junzhao.liang@spacemit.com>, November 2025
+ * - Alexander Smorkalov <alexander.smorkalov@opencv.ai>, December 2025
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
@@ -142,7 +144,7 @@
x = __riscv_vle8_v_u8m1(row, vl);
/* a = (a + b) / 2, round to zero with vxrm = 2 */
- a = __riscv_vaaddu_wx_u8m1(a, b, 2, vl);
+ a = __riscv_vaaddu_vv_u8m1(a, b, 2, vl);
/* a += x */
a = __riscv_vadd_vv_u8m1(a, x, vl);
@@ -175,47 +177,6 @@
PNG_UNUSED(prev_row)
}
-#define MIN_CHUNK_LEN 256
-#define MAX_CHUNK_LEN 2048
-
-static inline vuint8m1_t
-prefix_sum(vuint8m1_t chunk, unsigned char *carry, size_t vl,
- size_t max_chunk_len)
-{
- size_t r;
-
- for (r = 1; r < MIN_CHUNK_LEN; r <<= 1)
- {
- vbool8_t shift_mask = __riscv_vmsgeu_vx_u8m1_b8(__riscv_vid_v_u8m1(vl), r, vl);
- chunk = __riscv_vadd_vv_u8m1_mu(shift_mask, chunk, chunk, __riscv_vslideup_vx_u8m1(__riscv_vundefined_u8m1(), chunk, r, vl), vl);
- }
-
- for (r = MIN_CHUNK_LEN; r < MAX_CHUNK_LEN && r < max_chunk_len; r <<= 1)
- {
- vbool8_t shift_mask = __riscv_vmsgeu_vx_u8m1_b8(__riscv_vid_v_u8m1(vl), r, vl);
- chunk = __riscv_vadd_vv_u8m1_mu(shift_mask, chunk, chunk, __riscv_vslideup_vx_u8m1(__riscv_vundefined_u8m1(), chunk, r, vl), vl);
- }
-
- chunk = __riscv_vadd_vx_u8m1(chunk, *carry, vl);
- *carry = __riscv_vmv_x_s_u8m1_u8(__riscv_vslidedown_vx_u8m1(chunk, vl - 1, vl));
-
- return chunk;
-}
-
-static inline vint16m1_t
-abs_diff(vuint16m1_t a, vuint16m1_t b, size_t vl)
-{
- vint16m1_t diff = __riscv_vreinterpret_v_u16m1_i16m1(__riscv_vsub_vv_u16m1(a, b, vl));
- vbool16_t mask = __riscv_vmslt_vx_i16m1_b16(diff, 0, vl);
- return __riscv_vrsub_vx_i16m1_m(mask, diff, 0, vl);
-}
-
-static inline vint16m1_t
-abs_sum(vint16m1_t a, vint16m1_t b, size_t vl)
-{
- return __riscv_vadd_vv_i16m1(a, b, vl);
-}
-
static inline void
png_read_filter_row_paeth_rvv(size_t len, size_t bpp, unsigned char *row,
const unsigned char *prev)
diff --git a/scripts/cmake/AUTHORS.md b/scripts/cmake/AUTHORS.md
index c25a505..2731095 100644
--- a/scripts/cmake/AUTHORS.md
+++ b/scripts/cmake/AUTHORS.md
@@ -31,6 +31,7 @@
* Jon Creighton
* Joost Nieuwenhuijse
* Kyle Bentley
+ * Luis Caro Campos
* Martin Storsjö
* Owen Rudge
* Philip Lowman