Partly revert "shl: handle pathconf() errors" upstream
authorDavid Herrmann <dh.herrmann@gmail.com>
Sun, 25 May 2014 09:54:55 +0000 (11:54 +0200)
committerDavid Herrmann <dh.herrmann@gmail.com>
Sun, 25 May 2014 09:56:50 +0000 (11:56 +0200)
This partly reverts commit 41e76d11dff6dd9bc08bf829751f9634f32cdd38. I
removed the "superfluous" errno-handling, which in fact is needed. Turns
out pathconf() might leave errno unchanged.

Reported-by: Lubomir Rintel <lkundrak@v3.sk>
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
src/kmscon_module.c
src/shl_misc.h

index f480914..2bf0576 100644 (file)
@@ -181,7 +181,7 @@ void kmscon_load_modules(void)
 {
        int ret;
        DIR *ent;
-       struct dirent *buf = NULL, *de;
+       struct dirent *buf, *de;
        char *file;
        struct kmscon_module *mod;
 
index f4a6d90..fc37d9d 100644 (file)
@@ -54,9 +54,15 @@ static inline int shl_dirent(const char *path, struct dirent **ent)
        struct dirent *tmp;
        long name_max;
 
+       /* errno may be left unchanged, see pathconf(3p) */
+       errno = 0;
        name_max = pathconf(path, _PC_NAME_MAX);
-       if (name_max < 0)
-               return -errno;
+       if (name_max < 0) {
+               if (errno)
+                       return -errno;
+               else
+                       return -EINVAL;
+       }
 
        len = offsetof(struct dirent, d_name) + name_max + 1;
        tmp = malloc(len);