summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Thompson <ken@golang.org>2009-04-12 22:34:36 -0700
committerKen Thompson <ken@golang.org>2009-04-12 22:34:36 -0700
commit75e424e4996b8abd0615f11356ec1db896825781 (patch)
tree4f5a3317e4b0df9425d44fc1ed5e47b97a8cbaf1
parent2256f3ca6967cfec702161d025e5b0ea38fa157a (diff)
downloadgolang-75e424e4996b8abd0615f11356ec1db896825781.tar.gz
tweak
R=r OCL=27344 CL=27344
-rw-r--r--src/runtime/string.c29
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);