summaryrefslogtreecommitdiffstats
path: root/arguments.c
diff options
context:
space:
mode:
Diffstat (limited to 'arguments.c')
-rw-r--r--arguments.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arguments.c b/arguments.c
index d7274ff8..20d5e7ba 100644
--- a/arguments.c
+++ b/arguments.c
@@ -302,10 +302,13 @@ args_copy(struct args *args, int argc, char **argv)
struct args_value *value, *new_value;
u_int i;
+ cmd_log_argv(argc, argv, "%s", __func__);
+
new_args = args_create();
RB_FOREACH(entry, args_tree, &args->tree) {
- if (entry->count == 1) {
- args_set(new_args, entry->flag, NULL);
+ if (TAILQ_EMPTY(&entry->values)) {
+ for (i = 0; i < entry->count; i++)
+ args_set(new_args, entry->flag, NULL);
continue;
}
TAILQ_FOREACH(value, &entry->values, entry) {
@@ -314,6 +317,8 @@ args_copy(struct args *args, int argc, char **argv)
args_set(new_args, entry->flag, new_value);
}
}
+ if (args->count == 0)
+ return (new_args);
new_args->count = args->count;
new_args->values = xcalloc(args->count, sizeof *new_args->values);
for (i = 0; i < args->count; i++) {