aboutsummaryrefslogtreecommitdiff
path: root/tccpp.c
diff options
context:
space:
mode:
Diffstat (limited to 'tccpp.c')
-rw-r--r--tccpp.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/tccpp.c b/tccpp.c
index 01f5b37..2c276c2 100644
--- a/tccpp.c
+++ b/tccpp.c
@@ -2553,9 +2553,15 @@ maybe_newline:
} else if ((isidnum_table['.' - CH_EOF] & IS_ID) != 0) { /* asm mode */
*--p = c = '.';
goto parse_ident_fast;
- } else if (c == '.' && p[1] == '.') {
- p += 2;
- tok = TOK_DOTS;
+ } else if (c == '.') {
+ PEEKC(c, p);
+ if (c == '.') {
+ p++;
+ tok = TOK_DOTS;
+ } else {
+ *--p = '.'; /* may underflow into file->unget[] */
+ tok = '.';
+ }
} else {
tok = '.';
}