Fix memory leak in sim_parse_args
This commit is contained in:
parent
077b8428ab
commit
7c070881e4
@ -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.
|
||||
|
@ -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. */
|
||||
|
Loading…
Reference in New Issue
Block a user