diff --git a/Cargo.toml b/Cargo.toml index 6a8c558..0c99c74 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dtoa-short" -version = "0.3.0" +version = "0.3.1" authors = ["Xidorn Quan "] description = "Serialize float number and truncate to certain precision" diff --git a/src/lib.rs b/src/lib.rs index a0b5fa0..5270377 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -68,7 +68,7 @@ fn write_with_prec(dest: &mut W, value: V, prec: usize) fn restrict_prec(buf: &mut [u8], prec: usize) -> (&[u8], Notation) { let len = buf.len(); - debug_assert!(len <= BUFFER_SIZE, "dtoa may have changed its buffer size"); + debug_assert!(len <= BUFFER_SIZE + 1, "dtoa may have changed its buffer size"); // Put a leading zero to capture any carry. debug_assert!(buf[0] == b'\0', "Caller must prepare an empty byte for us"); buf[0] = b'0'; diff --git a/tests/basic.rs b/tests/basic.rs index a47141e..9244669 100644 --- a/tests/basic.rs +++ b/tests/basic.rs @@ -132,4 +132,6 @@ fn exponent_part_handling() { assert_expected_serialization(-9.999999e30_f32, "-10e30"); assert_expected_serialization(9.999999e-30_f32, "10e-30"); assert_expected_serialization(-9.999999e-30_f32, "-10e-30"); + // Regression test for assertion failure (https://bugzilla.mozilla.org/show_bug.cgi?id=1402419) + assert_expected_serialization(-8192e17_f32, "-819200000000000000000"); }