diff --git a/build.rs b/build.rs index 2f922154..84d87f7d 100644 --- a/build.rs +++ b/build.rs @@ -119,6 +119,9 @@ fn build_zlib(cfg: &mut cc::Build, target: &str) { if !cfg!(feature = "libc") || target.starts_with("wasm32") { cfg.define("Z_SOLO", None); + // zlib 1.3.2 uses `NULL` directly in compress.c/uncompr.c, but the + // Z_SOLO config path doesn't pull in headers that always define it. + cfg.define("NULL", Some("0")); } else { cfg.file("src/zlib/gzclose.c") .file("src/zlib/gzlib.c") @@ -126,8 +129,11 @@ fn build_zlib(cfg: &mut cc::Build, target: &str) { .file("src/zlib/gzwrite.c"); } + // zlib's zconf.h gates standard headers on `STDC` (not `__STDC__`), and + // 1.3.2 uses `NULL` directly in compress.c/uncompr.c. + cfg.define("STDC", None); + if !target.contains("windows") { - cfg.define("STDC", None); cfg.define("_LARGEFILE64_SOURCE", None); cfg.define("_POSIX_SOURCE", None); cfg.flag("-fvisibility=hidden"); diff --git a/src/zlib b/src/zlib index 51b7f2ab..da607da7 160000 --- a/src/zlib +++ b/src/zlib @@ -1 +1 @@ -Subproject commit 51b7f2abdade71cd9bb0e7a373ef2610ec6f9daf +Subproject commit da607da739fa6047df13e66a2af6b8bec7c2a498