summaryrefslogtreecommitdiffstats
path: root/options.c
diff options
context:
space:
mode:
Diffstat (limited to 'options.c')
-rw-r--r--options.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/options.c b/options.c
index c5a776e5..488f6cf9 100644
--- a/options.c
+++ b/options.c
@@ -354,16 +354,23 @@ options_array_set(struct options_entry *o, u_int idx, const char *value,
struct options_array_item *a;
char *new;
struct cmd_list *cmdlist;
+ char *error;
if (!OPTIONS_IS_ARRAY(o)) {
- *cause = xstrdup("not an array");
+ if (cause != NULL)
+ *cause = xstrdup("not an array");
return (-1);
}
if (OPTIONS_IS_COMMAND(o)) {
- cmdlist = cmd_string_parse(value, NULL, 0, cause);
- if (cmdlist == NULL && *cause != NULL)
+ cmdlist = cmd_string_parse(value, NULL, 0, &error);
+ if (cmdlist == NULL && error != NULL) {
+ if (cause != NULL)
+ *cause = error;
+ else
+ free(error);
return (-1);
+ }
}
a = options_array_item(o, idx);