Fix FTBFS and crash triggered by <AppSystem>.load_from_desktop_file()
- Avoid error '"iconname" may be used uninitialized in this function' by initializing said variable to NULL. - Define shell_util_get_file_description as static (like the other similar functions) to avoid another compiler error. - Don't save errors from g_key_file_load_from_data_dirs into the variable "error" (ie. pass NULL to it instead). Without this, gnome-shell crashes if the key file can't be found (with message "Error invoking Shell.load_from_desktop_file: Valid key file could not be found in search dirs"). - Check the result of the load_from_desktop_file() call in places.js, as it may be null.
This commit is contained in:
parent
5c97d21889
commit
205c57d6af
@ -66,12 +66,14 @@ Places.prototype = {
|
|||||||
this._menuBox.append(home.actor, Big.BoxPackFlags.NONE);
|
this._menuBox.append(home.actor, Big.BoxPackFlags.NONE);
|
||||||
|
|
||||||
let networkApp = Shell.AppSystem.get_default().load_from_desktop_file('gnome-network-scheme.desktop');
|
let networkApp = Shell.AppSystem.get_default().load_from_desktop_file('gnome-network-scheme.desktop');
|
||||||
|
if (networkApp != null) {
|
||||||
let networkIcon = networkApp.create_icon_texture(PLACES_ICON_SIZE);
|
let networkIcon = networkApp.create_icon_texture(PLACES_ICON_SIZE);
|
||||||
let network = new PlaceDisplay(networkApp.get_name(), networkIcon, Lang.bind(this, function () {
|
let network = new PlaceDisplay(networkApp.get_name(), networkIcon, Lang.bind(this, function () {
|
||||||
Main.overlay.hide();
|
Main.overlay.hide();
|
||||||
networkApp.launch();
|
networkApp.launch();
|
||||||
}));
|
}));
|
||||||
this._menuBox.append(network.actor, Big.BoxPackFlags.NONE);
|
this._menuBox.append(network.actor, Big.BoxPackFlags.NONE);
|
||||||
|
}
|
||||||
|
|
||||||
let connectIcon = Shell.TextureCache.get_default().load_icon_name("applications-internet", PLACES_ICON_SIZE);
|
let connectIcon = Shell.TextureCache.get_default().load_icon_name("applications-internet", PLACES_ICON_SIZE);
|
||||||
let connect = new PlaceDisplay('Connect to...', connectIcon, Lang.bind(this, function () {
|
let connect = new PlaceDisplay('Connect to...', connectIcon, Lang.bind(this, function () {
|
||||||
|
@ -652,7 +652,7 @@ shell_app_system_load_from_desktop_file (ShellAppSystem *system,
|
|||||||
{
|
{
|
||||||
char *app_path = g_build_filename ("applications", filename, NULL);
|
char *app_path = g_build_filename ("applications", filename, NULL);
|
||||||
success = g_key_file_load_from_data_dirs (keyfile, app_path, &full_path,
|
success = g_key_file_load_from_data_dirs (keyfile, app_path, &full_path,
|
||||||
G_KEY_FILE_NONE, error);
|
G_KEY_FILE_NONE, NULL);
|
||||||
g_free (app_path);
|
g_free (app_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -784,7 +784,7 @@ shell_app_info_get_desktop_file_path (ShellAppInfo *info)
|
|||||||
GIcon *
|
GIcon *
|
||||||
shell_app_info_get_icon (ShellAppInfo *info)
|
shell_app_info_get_icon (ShellAppInfo *info)
|
||||||
{
|
{
|
||||||
char *iconname;
|
char *iconname = NULL;
|
||||||
GIcon *icon;
|
GIcon *icon;
|
||||||
|
|
||||||
/* This code adapted from gdesktopappinfo.c
|
/* This code adapted from gdesktopappinfo.c
|
||||||
|
@ -106,7 +106,7 @@ shell_util_get_file_display_for_common_files (GFile *file)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
static char *
|
||||||
shell_util_get_file_description (GFile *file)
|
shell_util_get_file_description (GFile *file)
|
||||||
{
|
{
|
||||||
GFileInfo *info;
|
GFileInfo *info;
|
||||||
|
Loading…
Reference in New Issue
Block a user