]> Sergey Matveev's repositories - nnn.git/commitdiff
In-place invert optimization
authorArun Prakash Jana <engineerarun@gmail.com>
Wed, 14 Jul 2021 15:34:02 +0000 (21:04 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Wed, 14 Jul 2021 15:34:02 +0000 (21:04 +0530)
src/nnn.c

index 7c76415b0d2bf2aba9374a70c689664e0399a21b..3b114fd300ae32efab3cb3bfa5c3788447106cb3 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -1595,9 +1595,14 @@ static void invertselbuf(char *path)
                        len = mkpath(path, dentp->name, g_buf);
                        found = findinsel(findselpos, len);
                        if (found) {
-                               marked[nmarked].startpos = found;
-                               marked[nmarked].len = len;
-                               ++nmarked;
+                               if (nmarked && (found
+                                   == (marked[nmarked - 1].startpos + marked[nmarked - 1].len)))
+                                       marked[nmarked - 1].len += len;
+                               else {
+                                       marked[nmarked].startpos = found;
+                                       marked[nmarked].len = len;
+                                       ++nmarked;
+                               }
 
                                --nselected;
                                offset += len; /* buffer size adjustment */