about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libmain/shared.cc2
-rw-r--r--src/libutil/util.cc4
2 files changed, 3 insertions, 3 deletions
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index 709b6116a67e..a832344c9c49 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -65,7 +65,7 @@ void setLogType(string lt)
 void checkStoreNotSymlink(Path path)
 {
     struct stat st;
-    while (path.size()) {
+    while (path != "/") {
         if (lstat(path.c_str(), &st))
             throw SysError(format("getting status of `%1%'") % path);
         if (S_ISLNK(st.st_mode))
diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index 188453d16abd..ee34cb18a59e 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -115,7 +115,7 @@ Path dirOf(const Path & path)
     unsigned int pos = path.rfind('/');
     if (pos == string::npos)
         throw Error(format("invalid file name: %1%") % path);
-    return Path(path, 0, pos);
+    return pos == 0 ? "/" : Path(path, 0, pos);
 }
 
 
@@ -302,7 +302,7 @@ Path createTempDir()
 
 void createDirs(const Path & path)
 {
-    if (path == "") return;
+    if (path == "/") return;
     createDirs(dirOf(path));
     if (!pathExists(path))
         if (mkdir(path.c_str(), 0777) == -1)