diff --git a/src/number.rs b/src/number.rs index b6f51d5..6762844 100644 --- a/src/number.rs +++ b/src/number.rs @@ -18,6 +18,10 @@ pub fn parse_number<'b, 'a>(values: &'b mut &'a [u8]) -> Result, Erro is_float = true } length += 1; + + if values.len() == 1 { + break; + } *values = values.get(1..).ok_or(Error::InvalidEOF)?; let byte = values.get(0).ok_or(Error::InvalidEOF)?; diff --git a/tests/it/main.rs b/tests/it/main.rs index efd25e3..14e25f1 100644 --- a/tests/it/main.rs +++ b/tests/it/main.rs @@ -232,6 +232,12 @@ fn edges() { assert!(parse(br#""\u"""#).is_err()); assert!(parse(br#""\u1234""#).is_ok()); + assert!(parse(br#"1"#).is_ok()); + assert!(parse(br#"11"#).is_ok()); + assert!(parse(br#"1.1"#).is_ok()); + assert!(parse(br#"1.1E-6"#).is_ok()); + assert!(parse(br#"1.1e-6"#).is_ok()); + assert!(parse(br#"nula"#).is_err()); assert!(parse(br#"trua"#).is_err()); assert!(parse(br#"falsa"#).is_err());