[util] Fix memory issue
This commit is contained in:
parent
14a4a9d649
commit
2306ad46dc
|
@ -371,15 +371,15 @@ void
|
|||
output_options_t::add_options (option_parser_t *parser)
|
||||
{
|
||||
const char *text;
|
||||
char *text_free = NULL;
|
||||
|
||||
if (NULL == supported_formats)
|
||||
text = "Set output format";
|
||||
else
|
||||
{
|
||||
char *items = g_strjoinv ("/", const_cast<char **> (supported_formats));
|
||||
text = text_free = g_strdup_printf ("Set output format\n\n Supported formats are: %s", items);
|
||||
text = g_strdup_printf ("Set output format\n\n Supported output formats are: %s", items);
|
||||
g_free (items);
|
||||
parser->free_later ((char *) text);
|
||||
}
|
||||
|
||||
GOptionEntry entries[] =
|
||||
|
@ -393,8 +393,6 @@ output_options_t::add_options (option_parser_t *parser)
|
|||
"Output options:",
|
||||
"Options controlling the output",
|
||||
this);
|
||||
|
||||
g_free (text_free);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -85,11 +85,14 @@ struct option_parser_t
|
|||
memset (this, 0, sizeof (*this));
|
||||
usage_str = usage;
|
||||
context = g_option_context_new (usage);
|
||||
to_free = g_ptr_array_new ();
|
||||
|
||||
add_main_options ();
|
||||
}
|
||||
~option_parser_t (void) {
|
||||
g_option_context_free (context);
|
||||
g_ptr_array_foreach (to_free, (GFunc) g_free, NULL);
|
||||
g_ptr_array_free (to_free, TRUE);
|
||||
}
|
||||
|
||||
void add_main_options (void);
|
||||
|
@ -100,6 +103,10 @@ struct option_parser_t
|
|||
const gchar *help_description,
|
||||
option_group_t *option_group);
|
||||
|
||||
void free_later (char *p) {
|
||||
g_ptr_array_add (to_free, p);
|
||||
}
|
||||
|
||||
void parse (int *argc, char ***argv);
|
||||
|
||||
G_GNUC_NORETURN void usage (void) {
|
||||
|
@ -107,8 +114,10 @@ struct option_parser_t
|
|||
exit (1);
|
||||
}
|
||||
|
||||
private:
|
||||
const char *usage_str;
|
||||
GOptionContext *context;
|
||||
GPtrArray *to_free;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue