v = (int)blob1->blob_location - (int)blob2->blob_location;
- /* Different resource locations? */
+ /* Different locations? */
if (v)
return v;
#ifdef __WIN32__
case BLOB_IN_WINNT_FILE_ON_DISK:
case BLOB_WIN32_ENCRYPTED:
+ /* Windows: compare by starting LCN (logical cluster number) */
+ v = cmp_u64(blob1->sort_key, blob2->sort_key);
+ if (v)
+ return v;
#endif
/* Compare files by path: just a heuristic that will place files
* in the same directory next to each other. */
goto out;
}
+ if (reshdr.flags & WIM_RESHDR_FLAG_SOLID) {
+ ERROR("Image metadata in solid resources "
+ "is unsupported.");
+ ret = WIMLIB_ERR_INVALID_LOOKUP_TABLE_ENTRY;
+ goto out;
+ }
+
if (wim->hdr.part_number != 1) {
WARNING("Ignoring metadata resource found in a "
"non-first part of the split WIM");