Commit e90aade
fix(mft): preserve extension first_stream.size and dir_index in LIVE parser
Two root causes behind 16,517 directory size differences (Bug C):
1. IOCP out-of-order I/O: when an extension record is parsed before its
base record, the base overwrites first_stream.size with 0 (losing the
extension's $DATA size). Now snapshot and restore first_stream.size
alongside the other extension-data snapshots.
2. Extension records with only $I30 attributes were silently skipped by
the early-return guard (which didn't check dir_index_size). Now
include dir_index_size/dir_index_allocated in both the guard and the
return value.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1 parent 355b44c commit e90aade
File tree
3 files changed
+40
-5
lines changed- crates/uffs-mft/src
- io/parser
- parse
3 files changed
+40
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
723 | 723 | | |
724 | 724 | | |
725 | 725 | | |
| 726 | + | |
| 727 | + | |
| 728 | + | |
726 | 729 | | |
727 | 730 | | |
728 | 731 | | |
729 | 732 | | |
730 | 733 | | |
731 | 734 | | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
732 | 740 | | |
733 | 741 | | |
734 | 742 | | |
| |||
919 | 927 | | |
920 | 928 | | |
921 | 929 | | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
922 | 935 | | |
923 | 936 | | |
924 | 937 | | |
925 | 938 | | |
926 | 939 | | |
927 | 940 | | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
928 | 949 | | |
929 | 950 | | |
930 | 951 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
458 | 458 | | |
459 | 459 | | |
460 | 460 | | |
461 | | - | |
462 | | - | |
| 461 | + | |
| 462 | + | |
463 | 463 | | |
464 | 464 | | |
465 | 465 | | |
466 | 466 | | |
| 467 | + | |
| 468 | + | |
467 | 469 | | |
468 | 470 | | |
469 | 471 | | |
| |||
784 | 786 | | |
785 | 787 | | |
786 | 788 | | |
| 789 | + | |
| 790 | + | |
787 | 791 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
530 | 530 | | |
531 | 531 | | |
532 | 532 | | |
533 | | - | |
534 | | - | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
535 | 541 | | |
536 | 542 | | |
537 | 543 | | |
| |||
788 | 794 | | |
789 | 795 | | |
790 | 796 | | |
791 | | - | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
792 | 802 | | |
0 commit comments