mirror of
https://github.com/golang/go
synced 2024-11-24 22:00:09 -07:00
fmt: Scan(&int) was mishandling a lone zero.
It took it as an octal base prefix but assumed more digits were coming. Fixes #2077. R=golang-dev, dsymonds CC=golang-dev https://golang.org/cl/4764044
This commit is contained in:
parent
8c5c3c504c
commit
f189308fb4
@ -550,9 +550,11 @@ func (s *ss) getBase(verb int) (base int, digits string) {
|
|||||||
|
|
||||||
// scanNumber returns the numerical string with specified digits starting here.
|
// scanNumber returns the numerical string with specified digits starting here.
|
||||||
func (s *ss) scanNumber(digits string, haveDigits bool) string {
|
func (s *ss) scanNumber(digits string, haveDigits bool) string {
|
||||||
s.notEOF()
|
if !haveDigits {
|
||||||
if !haveDigits && !s.accept(digits) {
|
s.notEOF()
|
||||||
s.errorString("expected integer")
|
if !s.accept(digits) {
|
||||||
|
s.errorString("expected integer")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for s.accept(digits) {
|
for s.accept(digits) {
|
||||||
}
|
}
|
||||||
|
@ -298,6 +298,8 @@ var scanfTests = []ScanfTest{
|
|||||||
// Fixed bugs
|
// Fixed bugs
|
||||||
{"%d\n", "27\n", &intVal, 27}, // ok
|
{"%d\n", "27\n", &intVal, 27}, // ok
|
||||||
{"%d\n", "28 \n", &intVal, 28}, // was: "unexpected newline"
|
{"%d\n", "28 \n", &intVal, 28}, // was: "unexpected newline"
|
||||||
|
{"%v", "0", &intVal, 0}, // was: "EOF"; 0 was taken as base prefix and not counted.
|
||||||
|
{"%v", "0", &uintVal, uint(0)}, // was: "EOF"; 0 was taken as base prefix and not counted.
|
||||||
}
|
}
|
||||||
|
|
||||||
var overflowTests = []ScanTest{
|
var overflowTests = []ScanTest{
|
||||||
|
Loading…
Reference in New Issue
Block a user