diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c index 366da412f..3cb9335f4 100644 --- a/src/nautilus-file-operations.c +++ b/src/nautilus-file-operations.c @@ -7983,9 +7983,10 @@ mark_desktop_file_executable (CommonJob *common, gboolean interactive) { GError *error; - guint32 current_perms, new_perms; + guint32 current_perms; + guint32 new_perms; int response; - GFileInfo *info; + g_autoptr (GFileInfo) info = NULL; retry: @@ -7997,86 +7998,47 @@ retry: common->cancellable, &error); - if (info == NULL) - { - if (interactive) - { - response = run_error (common, - g_strdup (_("Unable to mark launcher trusted (executable)")), - error->message, - NULL, - FALSE, - CANCEL, RETRY, - NULL); - } - else - { - response = 0; - } - - if (response == 0 || response == GTK_RESPONSE_DELETE_EVENT) - { - abort_job (common); - } - else if (response == 1) - { - goto retry; - } - else - { - g_assert_not_reached (); - } - - goto out; - } - - - if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_UNIX_MODE)) + if (info != NULL && g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_UNIX_MODE)) { current_perms = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_MODE); new_perms = current_perms | S_IXGRP | S_IXUSR | S_IXOTH; - if ((current_perms != new_perms) && - !g_file_set_attribute_uint32 (file, G_FILE_ATTRIBUTE_UNIX_MODE, - new_perms, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, - common->cancellable, &error)) + if (current_perms != new_perms) { - g_object_unref (info); - - if (interactive) - { - response = run_error (common, - g_strdup (_("Unable to mark launcher trusted (executable)")), - error->message, - NULL, - FALSE, - CANCEL, RETRY, - NULL); - } - else - { - response = 0; - } - - if (response == 0 || response == GTK_RESPONSE_DELETE_EVENT) - { - abort_job (common); - } - else if (response == 1) - { - goto retry; - } - else - { - g_assert_not_reached (); - } - - goto out; + g_file_set_attribute_uint32 (file, G_FILE_ATTRIBUTE_UNIX_MODE, + new_perms, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + common->cancellable, &error); } } - g_object_unref (info); -out: - ; + + if (interactive && error != NULL) + { + response = run_error (common, + g_strdup (_("Unable to mark launcher trusted (executable)")), + error->message, + NULL, + FALSE, + CANCEL, RETRY, + NULL); + } + else + { + response = 0; + } + + if (response == 0 || response == GTK_RESPONSE_DELETE_EVENT) + { + abort_job (common); + } + else if (response == 1) + { + g_object_unref (info); + goto retry; + } + else + { + g_assert_not_reached (); + } } static void