]> wimlib.net Git - wimlib/blobdiff - src/solid.c
matchfinder_common: sync with libdeflate
[wimlib] / src / solid.c
index 704fb41467e5375030f48d78123c12c154dba38f..35f2eef0a20695c3a279af668a1c62ae22a4b3ed 100644 (file)
@@ -115,9 +115,9 @@ blob_set_solid_sort_name_from_inode(struct blob_descriptor *blob,
 
        /* If this file has multiple names, choose the shortest one.  */
        inode_for_each_dentry(dentry, inode) {
-               if (dentry->file_name_nbytes < best_name_nbytes) {
-                       best_name = dentry->file_name;
-                       best_name_nbytes = dentry->file_name_nbytes;
+               if (dentry->d_name_nbytes < best_name_nbytes) {
+                       best_name = dentry->d_name;
+                       best_name_nbytes = dentry->d_name_nbytes;
                }
        }
        blob->solid_sort_name = utf16le_dupz(best_name, best_name_nbytes);
@@ -139,6 +139,8 @@ dentry_fill_in_solid_sort_names(struct wim_dentry *dentry, void *_blob_table)
        struct blob_descriptor *blob;
 
        hash = inode_get_hash_of_unnamed_data_stream(inode);
+       if (!hash) /* unhashed? */
+               return 0;
        head = &blob_table->table[load_size_t_unaligned(hash) %
                                  blob_table->capacity];
        hlist_for_each_entry(blob, head, hash_list_2) {
@@ -205,7 +207,7 @@ sort_blob_list_for_solid_compression(struct list_head *blob_list)
                        break;
                case BLOB_IN_FILE_ON_DISK:
        #ifdef __WIN32__
-               case BLOB_IN_WINNT_FILE_ON_DISK:
+               case BLOB_IN_WINDOWS_FILE:
        #endif
                        blob_set_solid_sort_name_from_inode(blob, blob->file_inode);
                        break;