diff --git a/gio/glocalfile.c b/gio/glocalfile.c index 15738d8b8..a35368c71 100644 --- a/gio/glocalfile.c +++ b/gio/glocalfile.c @@ -2842,22 +2842,24 @@ g_local_file_measure_size_of_contents (gint fd, gboolean success = TRUE; const gchar *name; GDir *dir; + gint saved_errno; #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; dirp = fdopendir (fd); + saved_errno = errno; dir = dirp ? GLIB_PRIVATE_CALL(g_dir_new_from_dirp) (dirp) : NULL; + g_assert ((dirp == NULL) == (dir == NULL)); } #else dir = GLIB_PRIVATE_CALL(g_dir_open_with_errno) (dir_name->data, 0); + saved_errno = errno; #endif if (dir == NULL) { - gint saved_errno = errno; - #ifdef AT_FDCWD close (fd); #endif diff --git a/glib/gvariant.c b/glib/gvariant.c index 039f35590..5584614c6 100644 --- a/glib/gvariant.c +++ b/glib/gvariant.c @@ -4289,7 +4289,7 @@ g_variant_format_string_scan (const gchar *string, const gchar *limit, const gchar **endptr) { -#define next_char() (string == limit ? '\0' : *string++) +#define next_char() (string == limit ? '\0' : *(string++)) #define peek_char() (string == limit ? '\0' : *string) char c;