diff options
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/num/dec2flt/parse.rs | 3 | ||||
| -rw-r--r-- | src/libcore/tests/num/dec2flt/mod.rs | 6 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/libcore/num/dec2flt/parse.rs b/src/libcore/num/dec2flt/parse.rs index d20986faa0f..69418434ebe 100644 --- a/src/libcore/num/dec2flt/parse.rs +++ b/src/libcore/num/dec2flt/parse.rs @@ -73,7 +73,8 @@ pub fn parse_decimal(s: &str) -> ParseResult { } Some(&b'.') => { let (fractional, s) = eat_digits(&s[1..]); - if integral.is_empty() && fractional.is_empty() && s.is_empty() { + if integral.is_empty() && fractional.is_empty() { + // We require at least a single digit before or after the point. return Invalid; } diff --git a/src/libcore/tests/num/dec2flt/mod.rs b/src/libcore/tests/num/dec2flt/mod.rs index 9934e1dab96..17b2f59cd4d 100644 --- a/src/libcore/tests/num/dec2flt/mod.rs +++ b/src/libcore/tests/num/dec2flt/mod.rs @@ -102,6 +102,12 @@ fn lonely_dot() { } #[test] +fn exponentiated_dot() { + assert!(".e0".parse::<f32>().is_err()); + assert!(".e0".parse::<f64>().is_err()); +} + +#[test] fn lonely_sign() { assert!("+".parse::<f32>().is_err()); assert!("-".parse::<f64>().is_err()); |
