aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-02-02 17:25:47 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-02-02 17:25:47 +0530
commit06f6435ebdf6b426598aa395c60ed37c9c2a8419 (patch)
treecba0961e5527f204ae7eb0deac772d0eebafe410
parent47a2f93e02500de446c4600e866348172472d0e0 (diff)
downloadnnn-06f6435ebdf6b426598aa395c60ed37c9c2a8419.tar.gz
Fix build break
-rw-r--r--src/nnn.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/nnn.c b/src/nnn.c
index 33294da..5c60278 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -6178,12 +6178,12 @@ static char *load_input()
break;
if (chunk_count == 512 || !(input = xrealloc(input, (chunk_count + 1) * chunk)))
- goto malloc_2;
+ goto malloc_1;
}
if (off != total_read) {
if (entries == (1 << 16))
- goto malloc_2;
+ goto malloc_1;
paths[entries++] = input + off;
}
@@ -6195,16 +6195,25 @@ static char *load_input()
g_prefixpath = malloc(sizeof(char) * PATH_MAX);
if (!g_prefixpath)
- goto malloc_2;
+ goto malloc_1;
if (!(paths[0] = xrealpath(paths[0], cwd)))
- goto malloc_2; // free all entries
+ goto malloc_1; // free all entries
xstrlcpy(g_prefixpath, paths[0], strlen(paths[0]) + 1);
- for (i = 1; i < entries; ++i)
- if (!(paths[i] = xrealpath(paths[i], cwd)) || !common_prefix(paths[i], g_prefixpath))
- goto malloc_2; // free all entries
+ for (i = 1; i < entries; ++i) {
+ if (!(paths[i] = xrealpath(paths[i], cwd))) {
+ entries = i; // free from the previous entry
+ goto malloc_2;
+
+ }
+
+ if (!common_prefix(paths[i], g_prefixpath)) {
+ entries = i + 1; // free from the current entry
+ goto malloc_2;
+ }
+ }
if (entries == 1) {
tmp = xmemrchr((uchar *)g_prefixpath, '/', strlen(g_prefixpath));