diff --git a/dbus/dbus-sysdeps-util-unix.c b/dbus/dbus-sysdeps-util-unix.c index 9ff3fbc..cc869de 100644 --- a/dbus/dbus-sysdeps-util-unix.c +++ b/dbus/dbus-sysdeps-util-unix.c @@ -671,6 +671,7 @@ static dbus_bool_t dirent_buf_size(DIR * dirp, size_t *size) { long name_max; + int errno_before=errno; # if defined(HAVE_FPATHCONF) && defined(_PC_NAME_MAX) # if defined(HAVE_DIRFD) name_max = fpathconf(dirfd(dirp), _PC_NAME_MAX); @@ -679,7 +680,9 @@ dirent_buf_size(DIR * dirp, size_t *size) # else name_max = fpathconf(dirp->__dd_fd, _PC_NAME_MAX); # endif /* HAVE_DIRFD */ - if (name_max == -1) + if ((name_max == -1 || name_max == 0 ) && errno == errno_before) + name_max=PATH_MAX; + else if (name_max ==-1) # if defined(NAME_MAX) name_max = NAME_MAX; # else