X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=vrfileman;a=blobdiff_plain;f=src%2Ffspath.cc;h=ea8ce6e0bdb2596203b4299d650f47d251113a76;hp=e6677bd24181099e56db8bc778152735f2186f57;hb=de5bcfb5aaa126539e927ab9359a7de2bbfa3392;hpb=dfbd5842ef2f270e7d83507c4ba7bed005eea780 diff --git a/src/fspath.cc b/src/fspath.cc index e6677bd..ea8ce6e 100644 --- a/src/fspath.cc +++ b/src/fspath.cc @@ -163,8 +163,8 @@ void FSPath::sanitize() } 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)); @@ -192,7 +192,11 @@ void FSPath::sanitize() 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);