From: Russ Cox Date: Tue, 26 Jan 2010 02:31:44 +0000 (-0800) Subject: cc: correct handling of leading · X-Git-Tag: weekly.2010-01-27~37 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=7263bfc73bef737b8ba22b78bf1f8bfa87965ad4;p=gostls13.git cc: correct handling of leading · R=ken2 CC=golang-dev https://golang.org/cl/193081 --- diff --git a/src/cmd/cc/lex.c b/src/cmd/cc/lex.c index 857b15206f..fd4b0b87b2 100644 --- a/src/cmd/cc/lex.c +++ b/src/cmd/cc/lex.c @@ -196,7 +196,8 @@ compile(char *file, char **defs, int ndef) int i, c, fd[2]; static int first = 1; - ofile = strdup(file); + ofile = alloc(strlen(file)+10); + strcpy(ofile, file); p = utfrrune(ofile, pathchar()); if(p) { *p++ = 0; @@ -405,9 +406,9 @@ lookup(void) int c, n; char *r, *w; - if(symb[0] == 0xc2 && symb[1] == 0xb7) { + if((uchar)symb[0] == 0xc2 && (uchar)symb[1] == 0xb7) { // turn leading · into ""· - memmove(symb+2, symb, w-symb); + memmove(symb+2, symb, strlen(symb)+1); symb[0] = '"'; symb[1] = '"'; } diff --git a/src/cmd/cc/lexbody b/src/cmd/cc/lexbody index 7c726b3f5e..c6246e95ff 100644 --- a/src/cmd/cc/lexbody +++ b/src/cmd/cc/lexbody @@ -223,6 +223,13 @@ lookup(void) int c, l; char *r, *w; + if((uchar)symb[0] == 0xc2 && (uchar)symb[1] == 0xb7) { + // turn leading · into ""· + memmove(symb+2, symb, strlen(symb)+1); + symb[0] = '"'; + symb[1] = '"'; + } + // turn · into . for(r=w=symb; *r; r++) { if((uchar)*r == 0xc2 && (uchar)*(r+1) == 0xb7) { @@ -232,12 +239,6 @@ lookup(void) *w++ = *r; } *w++ = '\0'; - if(symb[0] == '.') { - // turn leading . into "". - memmove(symb+2, symb, w-symb); - symb[0] = '"'; - symb[1] = '"'; - } h = 0; for(p=symb; c = *p; p++)