fix redefine of #weak_define
This patch fixes 2 bugs in do_handle_define()
1. if (sym->weak)
goto replace_it;
This is wrong, we should allocate a new symbol if
sym->scope != file_scope, example:
inc.h:
#weak_define FOO default
redefine.c:
#define FOO redefine
FOO
default.c:
FOO
$ ./test-lexing -include inc.h redefine.c default.c
redefine
Segmentation fault
2. if (token_list_different(...)) {
...
}
return 1;
This is wrong too:
#weak_define FOO 1
#define FOO 1 // has no effect
#define FOO 2 // redefined without warning
Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>