Browse Source

Improved checks to _object_fn_by_md5().

default 3 years ago
parent
commit
b331f362be
1 changed files with 6 additions and 5 deletions
  1. 6 5
      data.c

+ 6 - 5
data.c

@@ -546,6 +546,7 @@ xs_list *index_list_desc(const char *fn, int skip, int show)
 static xs_str *_object_fn_by_md5(const char *md5, const char *func)
 static xs_str *_object_fn_by_md5(const char *md5, const char *func)
 {
 {
     xs *bfn = xs_fmt("%s/object/%c%c", srv_basedir, md5[0], md5[1]);
     xs *bfn = xs_fmt("%s/object/%c%c", srv_basedir, md5[0], md5[1]);
+    xs *ret = NULL;
     int ok = 1;
     int ok = 1;
 
 
     /* an object deleted from an index; fail but don't bark */
     /* an object deleted from an index; fail but don't bark */
@@ -557,14 +558,14 @@ static xs_str *_object_fn_by_md5(const char *md5, const char *func)
         ok = 0;
         ok = 0;
     }
     }
 
 
-    if (ok)
+    if (ok) {
         mkdirx(bfn);
         mkdirx(bfn);
-    else {
-        xs_free(bfn);
-        bfn = xs_fmt("%s/object/invalid", srv_basedir);
+        ret = xs_fmt("%s/%s.json", bfn, md5);
     }
     }
+    else
+        ret = xs_fmt("%s/object/invalid/invalid.json", srv_basedir);
 
 
-    return xs_fmt("%s/%s.json", bfn, md5);
+    return ret;
 }
 }