diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2024-11-13 20:07:45 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-13 20:07:45 +0530 |
commit | 6a4c6d83bacf5f03628a494778a30bce970f7cbc (patch) | |
tree | 219c2ce9c7c3c19b993ca11ca656f9221a36fd00 /ext/node/ops/zlib/mod.rs | |
parent | 7d9ba09f5a4464072476b8992e43f5e5c30bde3a (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.rs | 10 |
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::*; |