]> Sergey Matveev's repositories - nnn.git/commitdiff
Fix check when char is unsigned (#665)
authorSijmen J. Mulder <ik@sjmulder.nl>
Tue, 23 Jun 2020 23:05:42 +0000 (01:05 +0200)
committerGitHub <noreply@github.com>
Tue, 23 Jun 2020 23:05:42 +0000 (04:35 +0530)
If char is unsigned (as on ARM) subtracting a larger number would
result in a wrap around, not a negative value.

  src/nnn.c: In function 'readpipe':
  src/nnn.c:4325:11: warning: comparison is always false due to limited
  range of data type [-Wtype-limits]

     if (ctx < 0 || ctx > CTX_MAX)
             ^

src/nnn.c

index a8f82edb3c20aafe94a35ebca1bd1c6dea66e383..ef20b13d6df55b9ea4d7d6ef90c445a4b3061254 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -4326,9 +4326,11 @@ static void readpipe(int fd, char **path, char **lastname, char **lastdir)
 
        if (g_buf[0] == '+')
                ctx = (char)(get_free_ctx() + 1);
+       else if (g_buf[0] < '0')
+               return;
        else {
                ctx = g_buf[0] - '0';
-               if (ctx < 0 || ctx > CTX_MAX)
+               if (ctx > CTX_MAX)
                        return;
        }