aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiang <30155751@qq.com>2014-05-23 15:46:08 +0800
committerjiang <30155751@qq.com>2014-05-23 15:46:08 +0800
commitbcf60562e056265d0197bd3765a4d5256e2ca7ec (patch)
treeb1a79347a0b22878551dc69627e18536ae36029a
parent9c78da8a32f679e3662d80d361a5eec31740cf95 (diff)
downloadtinycc-bcf60562e056265d0197bd3765a4d5256e2ca7ec.tar.gz
tinycc-bcf60562e056265d0197bd3765a4d5256e2ca7ec.tar.bz2
The number of rows to display warning is wrong
For example: #define TOK_ASM_weak TOK_WEAK1 #define TOK_ASM_weak TOK_WEAK Output: C8.c:3: warning: TOK_ASM_weak redefined
-rw-r--r--libtcc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libtcc.c b/libtcc.c
index dc01831..721eaed 100644
--- a/libtcc.c
+++ b/libtcc.c
@@ -576,12 +576,15 @@ static void error1(TCCState *s1, int is_warning, const char *fmt, va_list ap)
for (f = file; f && f->filename[0] == ':'; f = f->prev)
;
if (f) {
+ int line_num = f->line_num;
for(pf = s1->include_stack; pf < s1->include_stack_ptr; pf++)
strcat_printf(buf, sizeof(buf), "In file included from %s:%d:\n",
(*pf)->filename, (*pf)->line_num);
- if (f->line_num > 0) {
+ if (line_num > 0) {
+ if(tok == TOK_LINEFEED)
+ line_num--;
strcat_printf(buf, sizeof(buf), "%s:%d: ",
- f->filename, f->line_num);
+ f->filename, line_num);
} else {
strcat_printf(buf, sizeof(buf), "%s: ",
f->filename);