]> git.wh0rd.org Git - nano.git/commitdiff
free_charptrarray, striponedir() - Plug some memory leaks (Steven Kneizys)
authorChris Allegretta <chrisa@asty.org>
Sun, 24 Mar 2002 00:46:22 +0000 (00:46 +0000)
committerChris Allegretta <chrisa@asty.org>
Sun, 24 Mar 2002 00:46:22 +0000 (00:46 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/branches/nano_1_0_branch/nano@1139 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
files.c

index 5861eca3553c25455ea613540edcc254fc060b4c..aaf0819b4f620847d4b6d936d0ac0badd82b33bd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 CVS code -
 - files.c:
+  free_charptrarray, striponedir()
+       - Plug some memory leaks (Steven Kneizys).
   read_file()
        - Abort if we read a file of 0 lines (num_lines == 0), fixes BUG #70.
 - winio.c:
diff --git a/files.c b/files.c
index 7b156f549f7628666b943bb288d67ba22899385c..722deaca8efe22eb5265d8474d6c2ec346358ed3 100644 (file)
--- a/files.c
+++ b/files.c
@@ -1085,7 +1085,7 @@ void free_charptrarray(char **array, int len)
 {
     int i;
 
-    for (i = 0; i < len - 1; i++)
+    for (i = 0; i < len; i++)
        free(array[i]);
     free(array);
 }
@@ -1124,7 +1124,10 @@ void striponedir(char *foo)
     if (tmp != foo)
        *tmp = 0;
     else
+    { /* SPK may need to make a 'default' path here */
+        if (*tmp != '/') *(tmp) = '.';
        *(tmp+1) = 0;
+    }
 
     return;
 }
@@ -1253,6 +1256,17 @@ char *do_browser(char *inpath)
            else
                path = mallocstrcpy(path, filelist[selected]);
 
+           /* SPK for '.' path, get the current path via getcwd */
+           if (!strcmp(path, "./..")) {
+               free(path);
+               path = getcwd(NULL, 0);
+               striponedir(path);                  
+               align(&path);
+               free_charptrarray(filelist, numents);
+               free(foo);
+               return do_browser(path);
+           }
+
            st = filestat(path);
            if (S_ISDIR(st.st_mode)) {
                if (opendir(path) == NULL) {
@@ -1272,6 +1286,8 @@ char *do_browser(char *inpath)
                }
 
                /* Start over again with the new path value */
+               free_charptrarray(filelist, numents);
+               free(foo);
                return do_browser(path);
            } else {
                retval = path;