fix redefine of #weak_define
commit506395425113ef60fcbd433cdf4080579d36ba86
authorOleg Nesterov <oleg@tv-sign.ru>
Mon, 2 Jan 2006 19:19:56 +0000 (2 22:19 +0300)
committerJosh Triplett <josh@freedesktop.org>
Tue, 5 Dec 2006 11:03:32 +0000 (5 03:03 -0800)
tree8d205b5ff5bc4045d677edea61a9092987d99ffe
parent75142e066305ec208543afaf878571647bec9eba
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>
pre-process.c