mirror of
https://github.com/open-simh/simtools.git
synced 2026-01-29 13:11:33 +00:00
Fix macro calls with omitted argument that has a default value,
followed by additional (not omitted) arguments.
This commit is contained in:
24
macros.c
24
macros.c
@@ -503,9 +503,15 @@ STREAM *expandmacro(
|
||||
if (macarg == NULL)
|
||||
break; /* Don't pick up any more arguments. */
|
||||
|
||||
nextcp = skipwhite (cp);
|
||||
arg = new_arg();
|
||||
arg->label = memcheck(strdup(macarg->label)); /* Copy the name */
|
||||
arg->value = getstring_macarg(refstr, cp, &nextcp);
|
||||
if (*nextcp != ',') {
|
||||
arg->value = getstring_macarg(refstr, cp, &nextcp);
|
||||
}
|
||||
else {
|
||||
arg->value = NULL;
|
||||
}
|
||||
nargs++; /* Count nonkeyword arguments only. */
|
||||
}
|
||||
|
||||
@@ -527,9 +533,13 @@ STREAM *expandmacro(
|
||||
|
||||
for (macarg = mac->args; macarg != NULL; macarg = macarg->next) {
|
||||
arg = find_arg(args, macarg->label);
|
||||
if (arg == NULL) {
|
||||
arg = new_arg();
|
||||
arg->label = memcheck(strdup(macarg->label));
|
||||
if (arg == NULL || arg->value == NULL) {
|
||||
int wasnull = 0;
|
||||
if (arg == NULL) {
|
||||
wasnull = 1;
|
||||
arg = new_arg();
|
||||
arg->label = memcheck(strdup(macarg->label));
|
||||
}
|
||||
if (macarg->locsym) {
|
||||
char temp[32];
|
||||
|
||||
@@ -541,8 +551,10 @@ STREAM *expandmacro(
|
||||
} else
|
||||
arg->value = memcheck(strdup(""));
|
||||
|
||||
arg->next = args;
|
||||
args = arg;
|
||||
if (wasnull) {
|
||||
arg->next = args;
|
||||
args = arg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user