diff options
author | Ken Thompson <ken@golang.org> | 2009-04-12 22:34:36 -0700 |
---|---|---|
committer | Ken Thompson <ken@golang.org> | 2009-04-12 22:34:36 -0700 |
commit | 75e424e4996b8abd0615f11356ec1db896825781 (patch) | |
tree | 4f5a3317e4b0df9425d44fc1ed5e47b97a8cbaf1 | |
parent | 2256f3ca6967cfec702161d025e5b0ea38fa157a (diff) | |
download | golang-75e424e4996b8abd0615f11356ec1db896825781.tar.gz |
tweak
R=r
OCL=27344
CL=27344
-rw-r--r-- | src/runtime/string.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/src/runtime/string.c b/src/runtime/string.c index b9b361861..c62731ea3 100644 --- a/src/runtime/string.c +++ b/src/runtime/string.c @@ -198,7 +198,7 @@ enum void sys·stringiter(String s, int32 k, int32 retk) { - int32 l, n; + int32 l; if(k >= s.len) { // retk=0 is end of iteration @@ -207,14 +207,13 @@ sys·stringiter(String s, int32 k, int32 retk) } l = s.str[k]; - n = 1; - - if(l >= Runeself) { - // multi-char rune - n = charntorune(&l, s.str+k, s.len-k); + if(l < Runeself) { + retk = k+1; + goto out; } - retk = k+n; + // multi-char rune + retk = k + charntorune(&l, s.str+k, s.len-k); out: FLUSH(&retk); @@ -224,7 +223,7 @@ out: void sys·stringiter2(String s, int32 k, int32 retk, int32 retv) { - int32 l, n; + int32 l; if(k >= s.len) { // retk=0 is end of iteration @@ -233,16 +232,14 @@ sys·stringiter2(String s, int32 k, int32 retk, int32 retv) goto out; } - l = s.str[k]; - n = 1; - - if(l >= Runeself) { - // multi-char rune - n = charntorune(&l, s.str+k, s.len-k); + retv = s.str[k]; + if(retv < Runeself) { + retk = k+1; + goto out; } - retk = k+n; - retv = l; + // multi-char rune + retk = k + charntorune(&retv, s.str+k, s.len-k); out: FLUSH(&retk); |