summaryrefslogtreecommitdiff
path: root/isl_arg.c
diff options
context:
space:
mode:
Diffstat (limited to 'isl_arg.c')
-rw-r--r--isl_arg.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/isl_arg.c b/isl_arg.c
index fb7eab77..5ce5e823 100644
--- a/isl_arg.c
+++ b/isl_arg.c
@@ -687,11 +687,13 @@ static int parse_str_option(struct isl_arg *decl, char **arg,
return 0;
if (has_argument) {
+ free(*p);
*p = strdup(s);
return 1;
}
if (arg[1]) {
+ free(*p);
*p = strdup(arg[1]);
return 2;
}
@@ -901,8 +903,9 @@ int isl_arg_parse(struct isl_arg *arg, int argc, char **argv, void *opt,
if (argv[1 + skip][0] != '-') {
a = next_arg(arg, a);
if (a >= 0) {
- const char **p;
- p = (const char **)(((char *)opt)+arg[a].offset);
+ char **p;
+ p = (char **)(((char *)opt)+arg[a].offset);
+ free(*p);
*p = strdup(argv[1 + skip]);
argc = drop_argument(argc, argv, 1 + skip, 1);
--n;