summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--osdep/OSUtils.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/osdep/OSUtils.cpp b/osdep/OSUtils.cpp
index 086bb269..c652e272 100644
--- a/osdep/OSUtils.cpp
+++ b/osdep/OSUtils.cpp
@@ -170,9 +170,11 @@ bool OSUtils::rmDashRf(const char *path)
return true;
dptr = (struct dirent *)0;
for(;;) {
- if (readdir_r(d,&de,&dptr))
+ if (readdir_r(d,&de,&dptr) != 0)
+ break;
+ if (!dptr)
break;
- if ((dptr)&&(strcmp(dptr->d_name,".") != 0)&&(strcmp(dptr->d_name,"..") != 0)) {
+ if ((strcmp(dptr->d_name,".") != 0)&&(strcmp(dptr->d_name,"..") != 0)&&(strlen(dptr->d_name) > 0)) {
std::string p(path);
p.push_back(ZT_PATH_SEPARATOR);
p.append(dptr->d_name);
@@ -180,7 +182,7 @@ bool OSUtils::rmDashRf(const char *path)
if (!rmDashRf(p.c_str()))
return false;
}
- } else break;
+ }
}
closedir(d);
return (rmdir(path) == 0);