]> Cypherpunks repositories - gostls13.git/commitdiff
tweak
authorKen Thompson <ken@golang.org>
Mon, 13 Apr 2009 05:34:36 +0000 (22:34 -0700)
committerKen Thompson <ken@golang.org>
Mon, 13 Apr 2009 05:34:36 +0000 (22:34 -0700)
R=r
OCL=27344
CL=27344

src/runtime/string.c

index b9b361861e364942e74e8cfdb17237d878a468ab..c62731ea31aa3126848c997b6d196e9e661dd899 100644 (file)
@@ -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);