]> Sergey Matveev's repositories - nnn.git/commitdiff
Use early error checks
authorArun Prakash Jana <engineerarun@gmail.com>
Sun, 20 Jan 2019 20:46:06 +0000 (02:16 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sun, 20 Jan 2019 20:52:09 +0000 (02:22 +0530)
Early check for empty file name in populate().
Check access before calling populate().
Drop populate() return type.

src/nnn.c

index bf4189d1eec64c40a7e72447d84695f5ced714b8..4faad91239208244e5d2303d7a6df3e83f6f6165 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -2480,14 +2480,14 @@ static int dentfill(char *path, struct entry **dents)
        return n;
 }
 
-/* Return the position of the matching entry or 0 otherwise */
+/*
+ * Return the position of the matching entry or 0 otherwise
+ * Note there's no NULL check for fname
+ */
 static int dentfind(const char *fname, int n)
 {
        static int i;
 
-       if (!fname)
-               return 0;
-
        DPRINTF_S(fname);
 
        for (i = 0; i < n; ++i)
@@ -2497,14 +2497,8 @@ static int dentfind(const char *fname, int n)
        return 0;
 }
 
-static bool populate(char *path, char *lastname)
+static void populate(char *path, char *lastname)
 {
-       /* Can fail when permissions change while browsing.
-        * It's assumed that path IS a directory when we are here.
-        */
-       if (access(path, R_OK) == -1)
-               return FALSE;
-
        if (cfg.blkorder) {
                printmsg("calculating...");
                refresh();
@@ -2518,7 +2512,7 @@ static bool populate(char *path, char *lastname)
 
        ndents = dentfill(path, &dents);
        if (!ndents)
-               return TRUE;
+               return;
 
        qsort(dents, ndents, sizeof(*dents), entrycmp);
 
@@ -2528,8 +2522,11 @@ static bool populate(char *path, char *lastname)
 #endif
 
        /* Find cur from history */
-       cur = dentfind(lastname, ndents);
-       return TRUE;
+       /* No NULL check for lastname, always points to an array */
+       if (!*lastname)
+               cur = 0;
+       else
+               dentfind(lastname, ndents);
 }
 
 static void redraw(char *path)
@@ -2749,11 +2746,16 @@ begin:
        }
 #endif
 
-       if (!populate(path, lastname)) {
+       /* Can fail when permissions change while browsing.
+        * It's assumed that path IS a directory when we are here.
+        */
+       if (access(path, R_OK) == -1) {
                printwarn();
                goto nochange;
        }
 
+       populate(path, lastname);
+
 #ifdef LINUX_INOTIFY
        if (inotify_wd == -1)
                inotify_wd = inotify_add_watch(inotify_fd, path, INOTIFY_MASK);
@@ -3659,7 +3661,7 @@ nochange:
                        if (ndents)
                                copycurname();
 
-                       /* Re-populate as directory content may have changed */
+                       /* Repopulate as directory content may have changed */
                        goto begin;
                case SEL_QUITCD: // fallthrough
                case SEL_QUIT: