Fix memory leak in sim_parse_args

This commit is contained in:
Stephane Carrez 2000-11-25 09:16:22 +00:00
parent 077b8428ab
commit 7c070881e4
2 changed files with 22 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2000-11-24 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* sim-options.c (sim_parse_args): Free the memory used for
long_options, short_options, handlers, opt_cpu, orig_val.
2000-11-20 Ben Elliston <bje@redhat.com>
* cgen-ops.h (SUBBI): New macro.

View File

@ -499,6 +499,7 @@ sim_parse_args (sd, argv)
const OPTION *opt;
OPTION_HANDLER **handlers;
sim_cpu **opt_cpu;
SIM_RC result = SIM_RC_OK;
/* Count the number of arguments. */
for (argc = 0; argv[argc] != NULL; ++argc)
@ -579,7 +580,8 @@ sim_parse_args (sd, argv)
if (opt->shortopt != 0)
{
sim_io_eprintf (sd, "internal error, short cpu specific option");
return SIM_RC_FAIL;
result = SIM_RC_FAIL;
break;
}
if (opt->opt.name != NULL)
{
@ -617,13 +619,24 @@ sim_parse_args (sd, argv)
break;
}
if (optc == '?')
return SIM_RC_FAIL;
{
result = SIM_RC_FAIL;
break;
}
if ((*handlers[optc]) (sd, opt_cpu[optc], orig_val[optc], optarg, 0/*!is_command*/) == SIM_RC_FAIL)
return SIM_RC_FAIL;
{
result = SIM_RC_FAIL;
break;
}
}
return SIM_RC_OK;
zfree (long_options);
zfree (short_options);
zfree (handlers);
zfree (opt_cpu);
zfree (orig_val);
return result;
}
/* Utility of sim_print_help to print a list of option tables. */