mirror of
https://git.freebsd.org/src.git
synced 2026-01-11 19:57:22 +00:00
unifdef: Fix collision check when adding symbols.
findsym() is intended for use while parsing input, so it should not be called from addsym2() or indirectsym(), which are called before any input is processed. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D48733
This commit is contained in:
parent
ace4637ee0
commit
c63af363c2
2 changed files with 15 additions and 6 deletions
|
|
@ -1488,7 +1488,7 @@ findsym(const char **strp)
|
|||
static void
|
||||
indirectsym(void)
|
||||
{
|
||||
const char *cp;
|
||||
struct macro key = { 0 };
|
||||
int changed;
|
||||
struct macro *sym, *ind;
|
||||
|
||||
|
|
@ -1497,10 +1497,9 @@ indirectsym(void)
|
|||
RB_FOREACH(sym, MACROMAP, ¯o_tree) {
|
||||
if (sym->value == NULL)
|
||||
continue;
|
||||
cp = sym->value;
|
||||
ind = findsym(&cp);
|
||||
key.name = sym->value;
|
||||
ind = RB_FIND(MACROMAP, ¯o_tree, &key);
|
||||
if (ind == NULL || ind == sym ||
|
||||
*cp != '\0' ||
|
||||
ind->value == NULL ||
|
||||
ind->value == sym->value)
|
||||
continue;
|
||||
|
|
@ -1539,10 +1538,10 @@ addsym1(bool ignorethis, bool definethis, char *symval)
|
|||
static void
|
||||
addsym2(bool ignorethis, const char *symname, const char *val)
|
||||
{
|
||||
const char *cp = symname;
|
||||
struct macro key = { .name = symname };
|
||||
struct macro *sym, *r;
|
||||
|
||||
sym = findsym(&cp);
|
||||
sym = RB_FIND(MACROMAP, ¯o_tree, &key);
|
||||
if (sym == NULL) {
|
||||
sym = calloc(1, sizeof(*sym));
|
||||
sym->ignore = ignorethis;
|
||||
|
|
|
|||
|
|
@ -36,7 +36,17 @@ EOF
|
|||
atf_check -s exit:1 -o inline:"b\n" unifdef -DFOO -DFOO=0 <file
|
||||
}
|
||||
|
||||
atf_test_case sDU
|
||||
sDU_head() {
|
||||
atf_set descr "simultaneous use of -s and -D or -U"
|
||||
}
|
||||
sDU_body() {
|
||||
atf_check unifdef -s -DFOO -UFOO /dev/null
|
||||
atf_check unifdef -s -DFOO -DBAR=FOO /dev/null
|
||||
}
|
||||
|
||||
atf_init_test_cases() {
|
||||
atf_add_test_case hash_comment
|
||||
atf_add_test_case redefine
|
||||
atf_add_test_case sDU
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue