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 | 557cf06d82320f0fbe4c9cf9f5f51d9b48d7a3ed (patch) | |
tree | 6a3a1f6c9c8a423b32de260d086125221e275edd | |
parent | e66798d5d87ac616f157c38cb0c78fa9dfe5e5a4 (diff) | |
download | golang-557cf06d82320f0fbe4c9cf9f5f51d9b48d7a3ed.tar.gz |
cc: correct handling of leading ·
R=ken2
CC=golang-dev
http://codereview.appspot.com/193081
Committer: Russ Cox <rsc@golang.org>
-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 857b15206..fd4b0b87b 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 7c726b3f5..c6246e95f 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++) |