diff options
Diffstat (limited to 'preprocess.c')
| -rw-r--r-- | preprocess.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/preprocess.c b/preprocess.c index 4ffe12e..7fa98f3 100644 --- a/preprocess.c +++ b/preprocess.c @@ -146,10 +146,16 @@ void pp_tokenize_all(Preprocessor* pp) { tok->raw.data = pp->src + pp->pos - tok->raw.len; } } else if (c == '|') { - ++pp->pos; - tok->kind = PpTokenKind_punctuator; - tok->raw.len = 2; - tok->raw.data = pp->src + pp->pos - tok->raw.len; + if (pp->src[pp->pos] == '|') { + ++pp->pos; + tok->kind = PpTokenKind_punctuator; + tok->raw.len = 2; + tok->raw.data = pp->src + pp->pos - tok->raw.len; + } else { + tok->kind = PpTokenKind_punctuator; + tok->raw.len = 1; + tok->raw.data = pp->src + pp->pos - tok->raw.len; + } } else if (c == '&') { if (pp->src[pp->pos] == '&') { ++pp->pos; |
