mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-24 13:06:14 +01:00
gfileenumerator: Warn if name is not available for get_child()
`standard::name` must be available for `g_file_enumerator_get_child()` to work. Emit a critical warning and return if it’s not. This is similar to the existing behaviour in `g_file_enumerator_iterate()`. Improve the documentation to mention this. Signed-off-by: Philip Withnall <pwithnall@endlessos.org> Fixes: #2507
This commit is contained in:
parent
e508a0a8df
commit
b6424b5ce1
@ -1025,7 +1025,9 @@ g_file_resolve_relative_path (GFile *file,
|
|||||||
* "standard::*" means all attributes in the standard namespace.
|
* "standard::*" means all attributes in the standard namespace.
|
||||||
* An example attribute query be "standard::*,owner::user".
|
* An example attribute query be "standard::*,owner::user".
|
||||||
* The standard attributes are available as defines, like
|
* The standard attributes are available as defines, like
|
||||||
* #G_FILE_ATTRIBUTE_STANDARD_NAME.
|
* #G_FILE_ATTRIBUTE_STANDARD_NAME. #G_FILE_ATTRIBUTE_STANDARD_NAME should
|
||||||
|
* always be specified if you plan to call g_file_enumerator_get_child() or
|
||||||
|
* g_file_enumerator_iterate() on the returned enumerator.
|
||||||
*
|
*
|
||||||
* If @cancellable is not %NULL, then the operation can be cancelled
|
* If @cancellable is not %NULL, then the operation can be cancelled
|
||||||
* by triggering the cancellable object from another thread. If the
|
* by triggering the cancellable object from another thread. If the
|
||||||
|
@ -721,6 +721,9 @@ g_file_enumerator_get_container (GFileEnumerator *enumerator)
|
|||||||
* directory of @enumerator. This function is primarily intended to be used
|
* directory of @enumerator. This function is primarily intended to be used
|
||||||
* inside loops with g_file_enumerator_next_file().
|
* inside loops with g_file_enumerator_next_file().
|
||||||
*
|
*
|
||||||
|
* To use this, #G_FILE_ATTRIBUTE_STANDARD_NAME must have been listed in the
|
||||||
|
* attributes list used when creating the #GFileEnumerator.
|
||||||
|
*
|
||||||
* This is a convenience method that's equivalent to:
|
* This is a convenience method that's equivalent to:
|
||||||
* |[<!-- language="C" -->
|
* |[<!-- language="C" -->
|
||||||
* gchar *name = g_file_info_get_name (info);
|
* gchar *name = g_file_info_get_name (info);
|
||||||
@ -736,11 +739,20 @@ GFile *
|
|||||||
g_file_enumerator_get_child (GFileEnumerator *enumerator,
|
g_file_enumerator_get_child (GFileEnumerator *enumerator,
|
||||||
GFileInfo *info)
|
GFileInfo *info)
|
||||||
{
|
{
|
||||||
|
const gchar *name;
|
||||||
|
|
||||||
g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), NULL);
|
g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), NULL);
|
||||||
g_return_val_if_fail (G_IS_FILE_INFO (info), NULL);
|
g_return_val_if_fail (G_IS_FILE_INFO (info), NULL);
|
||||||
|
|
||||||
return g_file_get_child (enumerator->priv->container,
|
name = g_file_info_get_name (info);
|
||||||
g_file_info_get_name (info));
|
|
||||||
|
if (G_UNLIKELY (name == NULL))
|
||||||
|
{
|
||||||
|
g_critical ("GFileEnumerator created without standard::name");
|
||||||
|
g_return_val_if_reached (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return g_file_get_child (enumerator->priv->container, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user