chiark / gitweb /
reject trailing zero limbs
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 8 Oct 2020 00:35:32 +0000 (01:35 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 8 Oct 2020 00:35:32 +0000 (01:35 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bigfloat.rs

index 78067103c41441854a580adbcb9ffaf3a6564a80..f3588b8e37de6d21544ac00d24d6b3929323bddc 100644 (file)
@@ -206,6 +206,7 @@ impl Bigfloat {
         }) { None? }
       match lt[DIGITS_PER_LIMB..] { [] | [b'_'] => (), _ => None? };
     }
+    if &s[s.len() - DIGITS_PER_LIMB.. ] == b"0000000000" { None? }
     Bigfloat::alloc_copy(s).ok()?
   }
 
@@ -351,6 +352,8 @@ mod test {
     fn bad(s: &str) { assert_eq!(None, Bigfloat::from_str(s)); }
     bad("");
     bad("0");
+    bad("0000000000");
+    bad("0000000000_0000000000");
     bad("aaaaaaaa0_aaaaaaaa00");
     bad("aaaaaaaa0_aaaaaaaa00");
     bad("aaaaaaaa00_aaaaaaaa0");