}
assert(len == (int)strlen(abs_path));
- // remove trailing slash
- if(abs_path[len - 1] == '/') {
+ // remove trailing slash if abs_path is not just a slash (root)
+ if(len > 1 && abs_path[len - 1] == '/') {
abs_path[--len] = 0;
}
assert(len == (int)strlen(abs_path));
parent = 0; // root dir has no parent
} else {
int plen = name - 1 - abs_path;
- assert(plen > 0);
+ assert(plen >= 0);
+
+ if(plen == 0) {
+ plen = 1; // our parent is root, so we need the slash
+ }
parent = new char[plen + 1];
memcpy(parent, abs_path, plen);