From: Tobias Klauser Date: Mon, 8 Apr 2019 07:54:33 +0000 (+0200) Subject: strings: unindent Fields X-Git-Tag: go1.13beta1~768 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f70d457a366a498ff91c4fb8dd03eca576b898bb;p=gostls13.git strings: unindent Fields CL 56470 unindented bytes.Fields, but not strings.Fields. Do so now to make it easier to diff the two functions for potential differences. Change-Id: Ifef81f50cee64e8277e91efa5ec5521d8d21d3bd Reviewed-on: https://go-review.googlesource.com/c/go/+/170951 Run-TryBot: Tobias Klauser Reviewed-by: Daniel Martí TryBot-Result: Gobot Gobot --- diff --git a/src/strings/strings.go b/src/strings/strings.go index e14fffb2b8..5a126a7a19 100644 --- a/src/strings/strings.go +++ b/src/strings/strings.go @@ -341,38 +341,38 @@ func Fields(s string) []string { wasSpace = isSpace } - if setBits < utf8.RuneSelf { // ASCII fast path - a := make([]string, n) - na := 0 - fieldStart := 0 - i := 0 - // Skip spaces in the front of the input. - for i < len(s) && asciiSpace[s[i]] != 0 { + if setBits >= utf8.RuneSelf { + // Some runes in the input string are not ASCII. + return FieldsFunc(s, unicode.IsSpace) + } + // ASCII fast path + a := make([]string, n) + na := 0 + fieldStart := 0 + i := 0 + // Skip spaces in the front of the input. + for i < len(s) && asciiSpace[s[i]] != 0 { + i++ + } + fieldStart = i + for i < len(s) { + if asciiSpace[s[i]] == 0 { i++ + continue } - fieldStart = i - for i < len(s) { - if asciiSpace[s[i]] == 0 { - i++ - continue - } - a[na] = s[fieldStart:i] - na++ + a[na] = s[fieldStart:i] + na++ + i++ + // Skip spaces in between fields. + for i < len(s) && asciiSpace[s[i]] != 0 { i++ - // Skip spaces in between fields. - for i < len(s) && asciiSpace[s[i]] != 0 { - i++ - } - fieldStart = i - } - if fieldStart < len(s) { // Last field might end at EOF. - a[na] = s[fieldStart:] } - return a + fieldStart = i } - - // Some runes in the input string are not ASCII. - return FieldsFunc(s, unicode.IsSpace) + if fieldStart < len(s) { // Last field might end at EOF. + a[na] = s[fieldStart:] + } + return a } // FieldsFunc splits the string s at each run of Unicode code points c satisfying f(c)