From a36595eb29d0238ef16a893639907ba042cd857e Mon Sep 17 00:00:00 2001 From: Folkert de Vries Date: Fri, 14 Aug 2026 23:10:00 +0200 Subject: [PATCH 1/4] merge env sections in yaml --- .github/workflows/checks.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index 8a1a77eb..fd719db5 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -42,6 +42,7 @@ jobs: CARGO_TARGET_WASM32_WASIP1_RUNNER: "wasmtime --dir /home/runner/work/zlib-rs/zlib-rs/test-libz-rs-sys --dir /tmp/" CARGO_TARGET_WASM32_WASIP1_RUSTFLAGS: "-Ctarget-feature=+simd128" BINDGEN_EXTRA_CLANG_ARGS_wasm32_wasip1: "--sysroot=/tmp/wasi-sdk-24.0-x86_64-linux/share/wasi-sysroot" + RUSTFLAGS: ${{ matrix.rust == 'nightly' && matrix.target == 'x86_64-unknown-linux-gnu' && '-Zsanitizer=address' || '' }} strategy: matrix: include: @@ -113,9 +114,6 @@ jobs: os: windows-11-arm codecov: false - env: - RUSTFLAGS: ${{ matrix.rust == 'nightly' && matrix.target == 'x86_64-unknown-linux-gnu' && '-Zsanitizer=address' || '' }} - steps: - name: Checkout sources uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 From adc70f00b65f8931128fce3a8f45cadd56ae4656 Mon Sep 17 00:00:00 2001 From: Folkert de Vries Date: Fri, 14 Aug 2026 23:23:41 +0200 Subject: [PATCH 2/4] artifacts moved on nightly --- .github/workflows/checks.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index fd719db5..f0aff8ee 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -461,7 +461,7 @@ jobs: run: | rustup toolchain install nightly cargo +nightly build --release --target ${{matrix.target}} --no-default-features --features=gz,gzprintf,c-allocator - cc -o example example.c target/${{matrix.target}}/release/deps/libz_rs.so + cc -o example example.c target/${{matrix.target}}/release/libz_rs.so ./example valgrind --track-origins=yes --error-exitcode=1 ./example - name: "cdylib: example.c with our .h files" @@ -469,7 +469,10 @@ jobs: LD_LIBRARY_PATH: "target/${{matrix.target}}/release/deps" working-directory: libz-rs-sys-cdylib run: | - cc -o example example.c target/${{matrix.target}}/release/deps/libz_rs.so -I../libz-rs-sys/include/ + ls target/${{matrix.target}}/release + echo "----" + ls target/${{matrix.target}}/release/deps + cc -o example example.c target/${{matrix.target}}/release/libz_rs.so -I../libz-rs-sys/include/ ./example valgrind --track-origins=yes --error-exitcode=1 ./example From f810b52a38bd5f7d733402d8a555d6e047d0867c Mon Sep 17 00:00:00 2001 From: Folkert de Vries Date: Fri, 14 Aug 2026 23:32:59 +0200 Subject: [PATCH 3/4] pass `-Zsanitizer=address` also to rustdoc --- .github/workflows/checks.yaml | 1 + libz-rs-sys/src/lib.rs | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml index f0aff8ee..b1257790 100644 --- a/.github/workflows/checks.yaml +++ b/.github/workflows/checks.yaml @@ -43,6 +43,7 @@ jobs: CARGO_TARGET_WASM32_WASIP1_RUSTFLAGS: "-Ctarget-feature=+simd128" BINDGEN_EXTRA_CLANG_ARGS_wasm32_wasip1: "--sysroot=/tmp/wasi-sdk-24.0-x86_64-linux/share/wasi-sysroot" RUSTFLAGS: ${{ matrix.rust == 'nightly' && matrix.target == 'x86_64-unknown-linux-gnu' && '-Zsanitizer=address' || '' }} + RUSTDOCFLAGS: ${{ matrix.rust == 'nightly' && matrix.target == 'x86_64-unknown-linux-gnu' && '-Zsanitizer=address' || '' }} strategy: matrix: include: diff --git a/libz-rs-sys/src/lib.rs b/libz-rs-sys/src/lib.rs index 48bf712b..f1318926 100644 --- a/libz-rs-sys/src/lib.rs +++ b/libz-rs-sys/src/lib.rs @@ -1892,7 +1892,7 @@ pub unsafe extern "C" fn deflateCopy(dest: z_streamp, source: z_streamp) -> c_in /// /// ``` /// use core::mem::MaybeUninit; -/// use libz_rs_sys::{z_stream, deflateInit_, zlibVersion, Z_OK}; +/// use libz_rs_sys::{z_stream, deflateInit_, deflateEnd, zlibVersion, Z_OK}; /// /// // the zalloc and zfree fields are initialized as zero/NULL. /// // `deflateInit_` will set a default allocation and deallocation function. @@ -1911,6 +1911,8 @@ pub unsafe extern "C" fn deflateCopy(dest: z_streamp, source: z_streamp) -> c_in /// // the stream is now fully initialized. Prefer `assume_init_mut` over /// // `assume_init` so the stream does not get moved. /// let strm = unsafe { strm.assume_init_mut() }; +/// +/// assert_eq!(unsafe { deflateEnd(strm) }, Z_OK); /// ``` #[cfg_attr(feature = "export-symbols", export_name = prefix!(deflateInit_))] pub unsafe extern "C" fn deflateInit_( @@ -1974,7 +1976,7 @@ pub unsafe extern "C" fn deflateInit_( /// /// ``` /// use core::mem::MaybeUninit; -/// use libz_rs_sys::{z_stream, deflateInit2_, zlibVersion, Z_OK}; +/// use libz_rs_sys::{z_stream, deflateInit2_, deflateEnd, zlibVersion, Z_OK}; /// /// // the zalloc and zfree fields are initialized as zero/NULL. /// // `deflateInit_` will set a default allocation and deallocation function. @@ -1997,6 +1999,8 @@ pub unsafe extern "C" fn deflateInit_( /// // the stream is now fully initialized. Prefer `assume_init_mut` over /// // `assume_init` so the stream does not get moved. /// let strm = unsafe { strm.assume_init_mut() }; +/// +/// assert_eq!(unsafe { deflateEnd(strm) }, Z_OK); /// ``` #[cfg_attr(feature = "export-symbols", export_name = prefix!(deflateInit2_))] pub unsafe extern "C" fn deflateInit2_( From c7fa7d66c5f1d6f2a11c051b9c234b235fedd1e7 Mon Sep 17 00:00:00 2001 From: Folkert de Vries Date: Fri, 14 Aug 2026 23:39:11 +0200 Subject: [PATCH 4/4] fixup `traceln!` calls --- zlib-rs/src/inflate.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/zlib-rs/src/inflate.rs b/zlib-rs/src/inflate.rs index 61073e9d..dd0b22b0 100644 --- a/zlib-rs/src/inflate.rs +++ b/zlib-rs/src/inflate.rs @@ -733,7 +733,7 @@ impl State<'_> { self.back += extra; } - traceln!("inflate: length {}", state.length); + traceln!("inflate: length {}", self.length); self.was = self.length; @@ -818,7 +818,7 @@ impl State<'_> { ); } - traceln!("inflate: distance {}", state.offset); + traceln!("inflate: distance {}", self.offset); break 'top Mode::Match; } @@ -1291,9 +1291,8 @@ impl State<'_> { } need_bits!(self, 3); - // self.last = self.bit_reader.bits(1) != 0; - self.flags - .update(Flags::IS_LAST_BLOCK, self.bit_reader.bits(1) != 0); + let last = self.bit_reader.bits(1) != 0; + self.flags.update(Flags::IS_LAST_BLOCK, last); self.bit_reader.drop_bits(1); match self.bit_reader.bits(2) { @@ -1363,7 +1362,7 @@ impl State<'_> { } self.length = hold as usize & 0xFFFF; - traceln!("inflate: stored length {}", state.length); + traceln!("inflate: stored length {}", self.length); self.bit_reader.init_bits(); @@ -1453,7 +1452,7 @@ impl State<'_> { self.back += extra; } - traceln!("inflate: length {}", state.length); + traceln!("inflate: length {}", self.length); self.was = self.length; @@ -1534,7 +1533,7 @@ impl State<'_> { break 'label self.bad("invalid distance code too far back\0"); } - traceln!("inflate: distance {}", state.offset); + traceln!("inflate: distance {}", self.offset); break 'blk Mode::Match; }