mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-20 23:58:54 +02:00
glocalfile: Add an assertion to help static analysis
Static analysis of the call to `g_dir_new_from_dirp()` is tricky, because the call is across library boundaries and indirected through a vfunc map because it’s private to libglib. Help the static analyser by adding an assertion about the input and output values for `g_dir_new_from_dirp()`. Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
This commit is contained in:
@@ -2842,22 +2842,24 @@ g_local_file_measure_size_of_contents (gint fd,
|
|||||||
gboolean success = TRUE;
|
gboolean success = TRUE;
|
||||||
const gchar *name;
|
const gchar *name;
|
||||||
GDir *dir;
|
GDir *dir;
|
||||||
|
gint saved_errno;
|
||||||
|
|
||||||
#ifdef AT_FDCWD
|
#ifdef AT_FDCWD
|
||||||
{
|
{
|
||||||
/* If this fails, we want to preserve the errno from fopendir() */
|
/* If this fails, we want to preserve the errno from fdopendir() */
|
||||||
DIR *dirp;
|
DIR *dirp;
|
||||||
dirp = fdopendir (fd);
|
dirp = fdopendir (fd);
|
||||||
|
saved_errno = errno;
|
||||||
dir = dirp ? GLIB_PRIVATE_CALL(g_dir_new_from_dirp) (dirp) : NULL;
|
dir = dirp ? GLIB_PRIVATE_CALL(g_dir_new_from_dirp) (dirp) : NULL;
|
||||||
|
g_assert ((dirp == NULL) == (dir == NULL));
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
dir = GLIB_PRIVATE_CALL(g_dir_open_with_errno) (dir_name->data, 0);
|
dir = GLIB_PRIVATE_CALL(g_dir_open_with_errno) (dir_name->data, 0);
|
||||||
|
saved_errno = errno;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (dir == NULL)
|
if (dir == NULL)
|
||||||
{
|
{
|
||||||
gint saved_errno = errno;
|
|
||||||
|
|
||||||
#ifdef AT_FDCWD
|
#ifdef AT_FDCWD
|
||||||
close (fd);
|
close (fd);
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user