gapplication: fix arguments leak in error path

If this g_return_val_if_fail() is ever hit, then we leak arguments.
This is not very important because if your code hits
g_return_val_if_fail() you are invoking undefined behavior, a rather
more serious problem, but let's replace it with g_critical() to be
robust.

This includes a small behavior change: it returns 1 rather than 0 in
this error case.

Found by Coverity.
This commit is contained in:
Michael Catanzaro 2021-03-31 11:44:23 -05:00
parent e2f2706539
commit 65b4bc30eb

View File

@ -2524,7 +2524,12 @@ g_application_run (GApplication *application,
context = g_main_context_default ();
acquired_context = g_main_context_acquire (context);
g_return_val_if_fail (acquired_context, 0);
if (!acquired_context)
{
g_critical ("g_application_run() cannot acquire the default main context because it is already acquired by another thread!");
g_strfreev (arguments);
return 1;
}
if (!G_APPLICATION_GET_CLASS (application)
->local_command_line (application, &arguments, &status))