diff options
author | Sven Verdoolaege <skimo@kotnet.org> | 2010-11-22 12:43:08 +0100 |
---|---|---|
committer | Sven Verdoolaege <skimo@kotnet.org> | 2010-11-26 15:51:32 +0100 |
commit | 8b0347e222fdac92fa5813cffe7d9a98032d3f2b (patch) | |
tree | eb864022d234ab423fb87b7b9d2feff49ea98ee0 | |
parent | 1cc1256f683b9db1a1b4d251f2ad5cdfe1801c29 (diff) | |
download | isl-8b0347e222fdac92fa5813cffe7d9a98032d3f2b.tar.gz isl-8b0347e222fdac92fa5813cffe7d9a98032d3f2b.tar.bz2 isl-8b0347e222fdac92fa5813cffe7d9a98032d3f2b.zip |
isl_arg_parse: free string arguments before overwriting them
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
-rw-r--r-- | isl_arg.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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; |