fixed a couple of bugs
authorJohn Tsiombikas <nuclear@mutantstargoat.com>
Tue, 2 Aug 2016 04:47:19 +0000 (07:47 +0300)
committerJohn Tsiombikas <nuclear@mutantstargoat.com>
Tue, 2 Aug 2016 04:47:19 +0000 (07:47 +0300)
src/fs.cc
src/fspath.cc

index a3e5b81..d6b5eeb 100644 (file)
--- a/src/fs.cc
+++ b/src/fs.cc
@@ -37,7 +37,9 @@ bool init_fs(const char *path)
                return false;
        }
 
-       cur_node = get_fsnode(path);
+       if(!(cur_node = get_fsnode(path))) {
+               return false;
+       }
        cur_node->expand();
        return true;
 }
@@ -50,6 +52,7 @@ void cleanup_fs()
                delete node;
        }
        node_cache.clear();
+       dtx_close_font(fat_font);
        delete iconrend;
 }
 
@@ -72,12 +75,12 @@ static float icon_angle(int col, int ncols, float max_angle = 0.0f)
 
 void draw_fs()
 {
-       static const float row_spacing = 2.0;
+       static const float row_spacing = 0.25;
        static const float radius = 0.6;
        static const float umax = 0.42;
        static const float max_icon_angle = M_PI * 2.0 * umax;
 
-       int max_ncols = std::max<int>(1, umax * 16);
+       int max_ncols = std::max<int>(1, umax * 12);
 
        Mat4 base_xform;
        base_xform.rotate(time_sec, 0, 0);
index e6677bd..eb923d6 100644 (file)
@@ -128,6 +128,8 @@ FSPath &FSPath::operator =(FSPath &&p)
 
 void FSPath::sanitize()
 {
+       printf("sanitize: \"%s\"\n", abs_path);
+
        // first pass, convert and backslashes to slashes
        char *s = abs_path;
        while(*s) {
@@ -163,8 +165,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 +194,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);