diff options
author | Russ Cox <rsc@golang.org> | 2010-01-25 18:31:44 -0800 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-01-25 18:31:44 -0800 |
commit | 7263bfc73bef737b8ba22b78bf1f8bfa87965ad4 (patch) | |
tree | 85586eed3b308d2c159cd35b6eb436f8173a5f31 | |
parent | 531e6b77c888caf22ac7c63503a4ef74064c9a77 (diff) | |
download | go-7263bfc73bef737b8ba22b78bf1f8bfa87965ad4.tar.gz go-7263bfc73bef737b8ba22b78bf1f8bfa87965ad4.zip |
cc: correct handling of leading ·
R=ken2
CC=golang-dev
https://golang.org/cl/193081
-rw-r--r-- | src/cmd/cc/lex.c | 7 | ||||
-rw-r--r-- | src/cmd/cc/lexbody | 13 |
2 files changed, 11 insertions, 9 deletions
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++) |