]> Cypherpunks repositories - gostls13.git/commitdiff
nihon
authorKen Thompson <ken@golang.org>
Mon, 9 Jun 2008 01:26:23 +0000 (18:26 -0700)
committerKen Thompson <ken@golang.org>
Mon, 9 Jun 2008 01:26:23 +0000 (18:26 -0700)
SVN=121620

src/cmd/gc/go.h
src/cmd/gc/lex.c

index 1598a8e69e95a4ab931d79b62638a01089967716..eaaf172925c813e1a3abcb465c89aaa77a5e0e19 100644 (file)
@@ -387,7 +387,7 @@ void        lexinit(void);
 char*  lexname(int);
 long   getr(void);
 int    getnsc(void);
-int    escchar(int, int*, vlong*);
+int    escchar(int, vlong*);
 int    getc(void);
 void   ungetc(int);
 void   mkpackage(char*);
index 3af1d386708d364ca165538b778f109585646786..95d1409f277f8abbfa41abf276364f20ef7dc118 100644 (file)
@@ -175,7 +175,6 @@ yylex(void)
        vlong v;
        char *cp;
        Rune rune;
-       int escflag;
        Sym *s;
 
 l0:
@@ -225,19 +224,19 @@ l0:
 
        caseq:
                for(;;) {
-                       if(escchar('"', &escflag, &v))
+                       if(escchar('"', &v))
                                break;
-                       if(escflag) {
-                               cp = remal(cp, c1, 1);
-                               cp[c1++] = v;
-                       } else {
+                       if(v >= Runeself) {
                                // botch - this limits size of runes
                                rune = v;
                                c = runelen(rune);
                                cp = remal(cp, c1, c);
                                runetochar(cp+c1, &rune);
                                c1 += c;
+                               continue;
                        }
+                       cp = remal(cp, c1, 1);
+                       cp[c1++] = v;
                }
                goto catem;
 
@@ -282,9 +281,9 @@ l0:
 
        case '\'':
                /* '.' */
-               if(escchar('\'', &escflag, &v))
+               if(escchar('\'', &v))
                        v = '\'';       // allow '''
-               if(!escchar('\'', &escflag, &v)) {
+               if(!escchar('\'', &v)) {
                        yyerror("missing '");
                        ungetc(v);
                }
@@ -696,13 +695,12 @@ getnsc(void)
 
 
 int
-escchar(int e, int *escflg, vlong *val)
+escchar(int e, vlong *val)
 {
-       int i, c;
+       int i;
+       long c;
        vlong l;
 
-       *escflg = 0;
-
 loop:
        c = getr();
        if(c == '\n') {
@@ -779,7 +777,6 @@ hex:
                ungetc(c);
                break;
        }
-       *escflg = 1;
        *val = l;
        return 0;
 
@@ -796,7 +793,6 @@ oct:
        }
        if(l > 255)
                warn("oct escape value > 255: %d", l);
-       *escflg = 1;
        *val = l;
        return 0;
 }