update readme
[lunaix-os.git] / lunaix-os / kernel / fs / iso9660 / directory.c
index d240e1fc60f4bb2a1707d0caa72ad9b76b03e96a..816f6eb6b398e083181267ca162cda7e59303047 100644 (file)
@@ -21,8 +21,10 @@ iso9660_fill_drecache(struct iso_drecache* cache, struct iso_drecord* drec)
     u32_t l = drec->name.len;
     while (l < (u32_t)-1 && drec->name.content[l--] != ';')
         ;
-    l = (l + 1) ? l : drec->name.len;
-    l = MIN(l, ISO9660_IDLEN);
+    l++;
+    l = l ? l : drec->name.len;
+    l = MIN(l, ISO9660_IDLEN - 1);
+
     strncpy(cache->name_val, drec->name.content, l);
     cache->name = HSTR(cache->name_val, l);
     hstr_rehash(&cache->name, HSTR_FULL_HASH);
@@ -32,7 +34,8 @@ int
 iso9660_setup_dnode(struct v_dnode* dnode, struct v_inode* inode)
 {
     if (!(inode->itype & VFS_IFDIR)) {
-        return;
+        vfs_assign_inode(dnode, inode);
+        return 0;
     }
 
     int errno = 0;
@@ -113,9 +116,7 @@ found:
         vfs_i_addhash(inode);
     }
 
-    iso9660_setup_dnode(dnode, inode);
-
-    return 0;
+    return iso9660_setup_dnode(dnode, inode);
 }
 
 static int