summaryrefslogtreecommitdiff
path: root/ext/node/ops/zlib/mod.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-11-13 20:07:45 +0530
committerGitHub <noreply@github.com>2024-11-13 20:07:45 +0530
commit6a4c6d83bacf5f03628a494778a30bce970f7cbc (patch)
tree219c2ce9c7c3c19b993ca11ca656f9221a36fd00 /ext/node/ops/zlib/mod.rs
parent7d9ba09f5a4464072476b8992e43f5e5c30bde3a (diff)
fix(ext/node): zlib.crc32() (#26856)
Fixes https://github.com/denoland/deno/issues/26845
Diffstat (limited to 'ext/node/ops/zlib/mod.rs')
-rw-r--r--ext/node/ops/zlib/mod.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/ext/node/ops/zlib/mod.rs b/ext/node/ops/zlib/mod.rs
index e75ef050d..991c0925d 100644
--- a/ext/node/ops/zlib/mod.rs
+++ b/ext/node/ops/zlib/mod.rs
@@ -1,6 +1,7 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
use deno_core::op2;
+use libc::c_ulong;
use std::borrow::Cow;
use std::cell::RefCell;
use zlib::*;
@@ -381,6 +382,15 @@ pub fn op_zlib_close_if_pending(
Ok(())
}
+#[op2(fast)]
+#[smi]
+pub fn op_zlib_crc32(#[buffer] data: &[u8], #[smi] value: u32) -> u32 {
+ // SAFETY: `data` is a valid buffer.
+ unsafe {
+ zlib::crc32(value as c_ulong, data.as_ptr(), data.len() as u32) as u32
+ }
+}
+
#[cfg(test)]
mod tests {
use super::*;