aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarry Jeffery <harry@exec64.co.uk>2015-11-11 12:21:56 +0000
committerHarry Jeffery <harry@exec64.co.uk>2015-11-11 12:21:56 +0000
commit97776d7ca967a9e304caa3e83bda536e667698ad (patch)
tree5ca07eb64491ff25ba4a450f7add737c65923bac
parentc374d646a1da74ebb559cfcb89dc73932092e7f9 (diff)
downloadimv-97776d7ca967a9e304caa3e83bda536e667698ad.tar.gz
Fix navigator path recursion infinite loop
-rw-r--r--navigator.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/navigator.c b/navigator.c
index ccfeb51..e5babdb 100644
--- a/navigator.c
+++ b/navigator.c
@@ -78,6 +78,10 @@ void imv_navigator_add_path(struct imv_navigator *nav, const char *path)
if(d) {
struct dirent *dir;
while((dir = readdir(d)) != NULL) {
+ if(strcmp(dir->d_name, "..") == 0 ||
+ strcmp(dir->d_name, ".") == 0) {
+ continue;
+ }
snprintf(path_buf, sizeof(path_buf), "%s/%s", path, dir->d_name);
add_item(nav, path_buf);
}
@@ -97,6 +101,10 @@ void imv_navigator_add_path_recursive(struct imv_navigator *nav, const char *pat
if(d) {
struct dirent *dir;
while((dir = readdir(d)) != NULL) {
+ if(strcmp(dir->d_name, "..") == 0 ||
+ strcmp(dir->d_name, ".") == 0) {
+ continue;
+ }
snprintf(path_buf, sizeof(path_buf), "%s/%s", path, dir->d_name);
imv_navigator_add_path_recursive(nav, path_buf);
}