When g_option_context_parse fails, context and error variables are not getting free'd
which results in memory leaks. Free'ing the same.
And replacing g_error_free with g_clear_error, which checks if the error being passed
is not NULL and sets the variable to NULL on free'ing.
https://bugzilla.gnome.org/show_bug.cgi?id=753851
if (error != NULL) {
g_print ("could not construct pipeline: %s\n", error->message);
- g_error_free (error);
+ g_clear_error (&error);
exit (-1);
}
gst_message_parse_error (msg, &err, &dbg);
gst_object_default_error (msg->src, err, dbg);
- g_error_free (err);
+ g_clear_error (&err);
g_free (dbg);
g_main_loop_quit (loop);
break;
g_option_context_add_group (ctx, gst_init_get_option_group ());
if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
g_print ("Error initializing: %s\n", err->message);
+ g_clear_error (&err);
+ g_option_context_free (ctx);
return 1;
}
g_option_context_free (ctx);
* calls gtk_init() and gst_init() */
if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
g_print ("Error initializing: %s\n", err->message);
+ g_clear_error (&err);
+ g_option_context_free (ctx);
exit (1);
}
+ g_option_context_free (ctx);
/* any filenames we got passed on the command line? parse them! */
if (cmd_filenames != NULL) {
g_option_context_add_group (ctx, gst_init_get_option_group ());
if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
g_print ("Failed to initialize: %s\n", err->message);
- g_error_free (err);
+ g_clear_error (&err);
+ g_option_context_free (ctx);
return 1;
}
+ g_option_context_free (ctx);
printf ("Run me with --help to see the Application options appended.\n");
g_printerr ("Error initializing: %s\n", GST_STR_NULL (err->message));
else
g_printerr ("Error initializing: Unknown error!\n");
+ g_clear_error (&err);
+ g_option_context_free (ctx);
exit (1);
}
g_option_context_free (ctx);
read = g_socket_receive (socket, buffer, sizeof (buffer), NULL, &err);
if (read == -1)
g_error ("Failed to read from socket: %s", err->message);
+ g_clear_error (&err);
if (verbose)
g_message ("Received %" G_GSSIZE_FORMAT " bytes from %s socket", read,
sizeof (header), &written, &err);
if (status == G_IO_STATUS_ERROR) {
g_error ("Failed to write to stdout: %s", err->message);
+ g_clear_error (&err);
} else if (status == G_IO_STATUS_EOF) {
g_message ("EOF on stdout");
exit (0);
g_io_channel_write_chars (stdout_channel, buffer, read, &written, &err);
if (status == G_IO_STATUS_ERROR) {
g_error ("Failed to write to stdout: %s", err->message);
+ g_clear_error (&err);
} else if (status == G_IO_STATUS_EOF) {
g_message ("EOF on stdout");
exit (0);
&read, &err);
if (status == G_IO_STATUS_ERROR) {
g_error ("Failed to read from stdin: %s", err->message);
+ g_clear_error (&err);
} else if (status == G_IO_STATUS_EOF) {
g_message ("EOF on stdin");
exit (0);
status = g_io_channel_read_chars (channel, buffer, header.size, &read, &err);
if (status == G_IO_STATUS_ERROR) {
g_error ("Failed to read from stdin: %s", err->message);
+ g_clear_error (&err);
} else if (status == G_IO_STATUS_EOF) {
g_message ("EOF on stdin");
exit (0);
g_error ("Failed to write to socket: %s", err->message);
else if (written != header.size)
g_error ("Unexpected write size: %" G_GSSIZE_FORMAT, written);
-
+ g_clear_error (&err);
if (verbose)
g_message ("Sent %" G_GSSIZE_FORMAT " bytes to %s socket", read,
(header.type == TYPE_EVENT ? "event" : "general"));
G_SOCKET_PROTOCOL_UDP, &err);
if (!socket_event)
g_error ("Couldn't create event socket: %s", err->message);
+ g_clear_error (&err);
socket_general =
g_socket_new (G_SOCKET_FAMILY_IPV4, G_SOCKET_TYPE_DATAGRAM,
G_SOCKET_PROTOCOL_UDP, &err);
if (!socket_general)
g_error ("Couldn't create general socket: %s", err->message);
+ g_clear_error (&err);
/* Bind sockets */
bind_addr = g_inet_address_new_any (G_SOCKET_FAMILY_IPV4);
if (!g_socket_join_multicast_group (socket_event, mcast_addr, FALSE, NULL,
&err))
g_error ("Couldn't join multicast group: %s", err->message);
+ g_clear_error (&err);
if (!g_socket_join_multicast_group (socket_general, mcast_addr, FALSE,
NULL, &err))
g_error ("Couldn't join multicast group: %s", err->message);
+ g_clear_error (&err);
}
} else {
/* Join multicast group without any interface */
if (!g_socket_join_multicast_group (socket_event, mcast_addr, FALSE, NULL,
&err))
g_error ("Couldn't join multicast group: %s", err->message);
+ g_clear_error (&err);
if (!g_socket_join_multicast_group (socket_general, mcast_addr, FALSE, NULL,
&err))
g_error ("Couldn't join multicast group: %s", err->message);
+ g_clear_error (&err);
}
event_saddr = g_inet_socket_address_new (mcast_addr, PTP_EVENT_PORT);
sizeof (header), &written, &err);
if (status == G_IO_STATUS_ERROR) {
g_error ("Failed to write to stdout: %s", err->message);
+ g_clear_error (&err);
} else if (status == G_IO_STATUS_EOF) {
g_message ("EOF on stdout");
exit (0);
(const gchar *) clock_id_array, sizeof (clock_id_array), &written, &err);
if (status == G_IO_STATUS_ERROR) {
g_error ("Failed to write to stdout: %s", err->message);
+ g_clear_error (&err);
} else if (status == G_IO_STATUS_EOF) {
g_message ("EOF on stdout");
exit (0);
g_option_context_add_main_entries (opt_ctx, opt_entries, NULL);
if (!g_option_context_parse (opt_ctx, &argc, &argv, &err))
g_error ("Error parsing options: %s", err->message);
+ g_clear_error (&err);
g_option_context_free (opt_ctx);
setup_sockets ();
gst_message_parse_warning (msg, &err, &dbg);
GST_WARNING_OBJECT (GST_MESSAGE_SRC (msg), "%s (%s)", err->message,
(dbg ? dbg : "no details"));
- g_error_free (err);
+ g_clear_error (&err);
g_free (dbg);
break;
}
gst_message_parse_error (msg, &err, &dbg);
GST_ERROR_OBJECT (GST_MESSAGE_SRC (msg), "%s (%s)", err->message,
(dbg ? dbg : "no details"));
- g_error_free (err);
+ g_clear_error (&err);
g_free (dbg);
running = FALSE;
break;
g_option_context_add_group (ctx, gst_init_get_option_group ());
if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
g_print ("Error initializing: %s\n", GST_STR_NULL (err->message));
+ g_clear_error (&err);
+ g_option_context_free (ctx);
return 1;
}
g_option_context_free (ctx);
g_option_context_add_group (opt_ctx, gst_init_get_option_group ());
if (!g_option_context_parse (opt_ctx, &argc, &argv, &err))
g_error ("Error parsing options: %s", err->message);
+ g_clear_error (&err);
g_option_context_free (opt_ctx);
if (!gst_ptp_init (GST_PTP_CLOCK_ID_NONE, NULL))
g_option_context_add_group (ctx, gst_init_get_option_group ());
if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
g_printerr ("Error initializing: %s\n", err->message);
+ g_clear_error (&err);
+ g_option_context_free (ctx);
return -1;
}
g_option_context_free (ctx);
}
} else {
g_printerr (_("Could not load plugin file: %s\n"), error->message);
- g_error_free (error);
+ g_clear_error (&error);
return -1;
}
} else {
if (debug != NULL)
g_printerr (_("Additional debug info:\n%s\n"), debug);
- g_error_free (err);
+ g_clear_error (&err);
g_free (debug);
g_free (name);
}
if (debug) {
PRINT (_("INFO:\n%s\n"), debug);
}
- g_error_free (gerror);
+ g_clear_error (&gerror);
g_free (debug);
g_free (name);
break;
if (debug) {
PRINT (_("Additional debug info:\n%s\n"), debug);
}
- g_error_free (gerror);
+ g_clear_error (&gerror);
g_free (debug);
g_free (name);
break;
g_printerr ("Error initializing: %s\n", GST_STR_NULL (err->message));
else
g_printerr ("Error initializing: Unknown error!\n");
+ g_clear_error (&error);
+ g_option_context_free (ctx);
exit (1);
}
g_option_context_free (ctx);
if (error) {
g_printerr (_("ERROR: pipeline could not be constructed: %s.\n"),
GST_STR_NULL (error->message));
- g_error_free (error);
+ g_clear_error (&error);
} else {
g_printerr (_("ERROR: pipeline could not be constructed.\n"));
}
} else if (error) {
g_printerr (_("WARNING: erroneous pipeline: %s\n"),
GST_STR_NULL (error->message));
- g_error_free (error);
+ g_clear_error (&error);
return 1;
}
if (msg) {
gst_message_parse_error (msg, &err, NULL);
g_printerr ("%s - FAILED: %s\n", filename, err->message);
- g_error_free (err);
+ g_clear_error (&err);
gst_message_unref (msg);
} else {
g_printerr ("%s - FAILED: unknown error\n", filename);
g_option_context_add_group (ctx, gst_init_get_option_group ());
if (!g_option_context_parse (ctx, &argc, &argv, &err)) {
g_print ("Error initializing: %s\n", GST_STR_NULL (err->message));
+ g_clear_error (&err);
+ g_option_context_free (ctx);
exit (1);
}
g_option_context_free (ctx);