bitcode/serde/guard.rs
1use crate::coder::Result;
2use crate::error::err;
3
4pub const ZST_LIMIT: usize = 1 << 16;
5
6fn check_zst_len(len: usize) -> Result<()> {
7 if len > ZST_LIMIT {
8 err("too many zero sized types")
9 } else {
10 Ok(())
11 }
12}
13
14// Used by deserialize. Guards against Vec<()> with huge len taking forever.
15#[inline]
16pub fn guard_zst<T>(len: usize) -> Result<()> {
17 if core::mem::size_of::<T>() == 0 {
18 check_zst_len(len)
19 } else {
20 Ok(())
21 }
22}