aboutsummaryrefslogtreecommitdiff
path: root/lib/std/fmt/parse_float.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-03-12 18:05:27 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-03-12 18:05:27 -0700
commit1f34c03ac14ac352ec03267ca8592dadfbd5e4bc (patch)
treeebcb851922636b7dd2b17acb72187836c86180ec /lib/std/fmt/parse_float.zig
parent868253a9c94d9907fae81e5e3108c7d10a85f5c3 (diff)
parent8ebb18d9da0bfbe6a974636fd36e3391d1de253b (diff)
downloadzig-1f34c03ac14ac352ec03267ca8592dadfbd5e4bc.tar.gz
zig-1f34c03ac14ac352ec03267ca8592dadfbd5e4bc.zip
Merge remote-tracking branch 'origin/master' into llvm12
Diffstat (limited to 'lib/std/fmt/parse_float.zig')
-rw-r--r--lib/std/fmt/parse_float.zig4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/std/fmt/parse_float.zig b/lib/std/fmt/parse_float.zig
index 324b06898e..19e17ef5a8 100644
--- a/lib/std/fmt/parse_float.zig
+++ b/lib/std/fmt/parse_float.zig
@@ -339,7 +339,7 @@ fn caseInEql(a: []const u8, b: []const u8) bool {
}
pub fn parseFloat(comptime T: type, s: []const u8) !T {
- if (s.len == 0) {
+ if (s.len == 0 or (s.len == 1 and (s[0] == '+' or s[0] == '-'))) {
return error.InvalidCharacter;
}
@@ -379,6 +379,8 @@ test "fmt.parseFloat" {
testing.expectError(error.InvalidCharacter, parseFloat(T, ""));
testing.expectError(error.InvalidCharacter, parseFloat(T, " 1"));
testing.expectError(error.InvalidCharacter, parseFloat(T, "1abc"));
+ testing.expectError(error.InvalidCharacter, parseFloat(T, "+"));
+ testing.expectError(error.InvalidCharacter, parseFloat(T, "-"));
expectEqual(try parseFloat(T, "0"), 0.0);
expectEqual(try parseFloat(T, "0"), 0.0);