gfile: Check ETag attribute is present before trying to get it

A regression from issue #2907.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Fixes: #2932
This commit is contained in:
Philip Withnall 2023-03-06 13:02:41 +00:00
parent e75ba524fd
commit 4e62e55d6d
2 changed files with 5 additions and 3 deletions

View File

@ -7773,7 +7773,7 @@ g_file_load_contents (GFile *file,
NULL);
if (info)
{
*etag_out = g_strdup (g_file_info_get_etag (info));
*etag_out = g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_ETAG_VALUE) ? g_strdup (g_file_info_get_etag (info)) : NULL;
g_object_unref (info);
}
}
@ -7847,7 +7847,7 @@ load_contents_fstat_callback (GObject *obj,
stat_res, NULL);
if (info)
{
data->etag = g_strdup (g_file_info_get_etag (info));
data->etag = g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_ETAG_VALUE) ? g_strdup (g_file_info_get_etag (info)) : NULL;
g_object_unref (info);
}

View File

@ -89,7 +89,9 @@ calc_event_type (GFileInfo *last,
if (last != NULL && new == NULL)
return G_FILE_MONITOR_EVENT_DELETED;
if (g_strcmp0 (g_file_info_get_etag (last), g_file_info_get_etag (new)))
if (g_file_info_has_attribute (last, G_FILE_ATTRIBUTE_ETAG_VALUE) &&
g_file_info_has_attribute (new, G_FILE_ATTRIBUTE_ETAG_VALUE) &&
g_strcmp0 (g_file_info_get_etag (last), g_file_info_get_etag (new)) != 0)
return G_FILE_MONITOR_EVENT_CHANGED;
if (g_file_info_get_size (last) != g_file_info_get_size (new))