From 948a17ed1d61de822a7d06527ca88b1ff709f945 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Krasnoborski?= Date: Tue, 24 Feb 2015 02:40:32 +0100 Subject: [PATCH 1/2] Stop parsing "-" as integer, fixes #22745 --- src/libcore/num/mod.rs | 1 + src/libcoretest/num/mod.rs | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 7612469c8088b..b1039f79f23de 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -1672,6 +1672,7 @@ macro_rules! from_str_radix_int_impl { let is_signed_ty = (0 as $T) > Int::min_value(); match src.slice_shift_char() { + Some(('-', "")) => Err(PIE { kind: Empty }), Some(('-', src)) if is_signed_ty => { // The number is negative let mut result = 0; diff --git a/src/libcoretest/num/mod.rs b/src/libcoretest/num/mod.rs index 2c6efc0040fae..1199fd0106850 100644 --- a/src/libcoretest/num/mod.rs +++ b/src/libcoretest/num/mod.rs @@ -122,4 +122,9 @@ mod test { assert_eq!("-9223372036854775808".parse::().ok(), Some(i64_val)); assert_eq!("-9223372036854775809".parse::().ok(), None); } + + #[test] + test_int_from_minus_sign() { + assert_eq!("-".parse::().ok(), None); + } } From a9f6f4b73e838e83538d4544141d8354b4633aed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Krasnoborski?= Date: Tue, 24 Feb 2015 08:24:42 +0100 Subject: [PATCH 2/2] Add missing `fn` --- src/libcoretest/num/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcoretest/num/mod.rs b/src/libcoretest/num/mod.rs index 1199fd0106850..03f6e51a3498a 100644 --- a/src/libcoretest/num/mod.rs +++ b/src/libcoretest/num/mod.rs @@ -124,7 +124,7 @@ mod test { } #[test] - test_int_from_minus_sign() { + fn test_int_from_minus_sign() { assert_eq!("-".parse::().ok(), None); } }