fix: safe encode bits to check for 2^num_bits <= byte we are encoding
fix: I thought namedDeBruijn takes advantage of Binder for encoding and decoding. It does not... fix: Debruijn was being converted to NamedDeBruijn incorrectly
This commit is contained in:
parent
d641f731b7
commit
42544af799
|
@ -320,6 +320,6 @@ impl Encoder {
|
|||
self.buffer.push(chunk.len() as u8);
|
||||
self.buffer.extend(chunk);
|
||||
}
|
||||
self.buffer.push(0);
|
||||
self.buffer.push(0_u8);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -251,7 +251,7 @@ impl Converter {
|
|||
match term {
|
||||
Term::Var(name) => Term::Var(
|
||||
NamedDeBruijn {
|
||||
text: format!("i_{name}"),
|
||||
text: "i".to_string(),
|
||||
index: *name.as_ref(),
|
||||
}
|
||||
.into(),
|
||||
|
|
|
@ -676,6 +676,7 @@ impl<'b> Decode<'b> for NamedDeBruijn {
|
|||
impl<'b> Binder<'b> for NamedDeBruijn {
|
||||
fn binder_encode(&self, e: &mut Encoder) -> Result<(), en::Error> {
|
||||
self.text.encode(e)?;
|
||||
self.index.encode(e)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
@ -683,7 +684,7 @@ impl<'b> Binder<'b> for NamedDeBruijn {
|
|||
fn binder_decode(d: &mut Decoder) -> Result<Self, de::Error> {
|
||||
Ok(NamedDeBruijn {
|
||||
text: String::decode(d)?,
|
||||
index: DeBruijn::new(0),
|
||||
index: DeBruijn::decode(d)?,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -778,7 +779,7 @@ fn decode_term_tag(d: &mut Decoder) -> Result<u8, de::Error> {
|
|||
}
|
||||
|
||||
fn safe_encode_bits(num_bits: u32, byte: u8, e: &mut Encoder) -> Result<(), en::Error> {
|
||||
if 2_u8.pow(num_bits) < byte {
|
||||
if 2_u8.pow(num_bits) <= byte {
|
||||
Err(en::Error::Message(format!(
|
||||
"Overflow detected, cannot fit {byte} in {num_bits} bits."
|
||||
)))
|
||||
|
|
Loading…
Reference in New Issue