Resetlinkers Looping doesn't appear to be required.
This CL adds tracing to raise confidence that we can remove the offending loops.
#preflight 645a5e956c35ad81e67e994e
[CL 25401581 by andrew phillips in ue5-main branch]
#rb PJ.Kack
#jira none
#rnx
#preflight 645a13fd013f3751583f0380
- If the value being stored in ExportBundleEntriesCount exceeds MAX_int32 then we will end up failing the check below and printing an error anyway so we might as well just cast at this point.
[CL 25385553 by paul chipchase in ue5-main branch]
#rb Sebastien.Lussier
#jira none
#rnx
#preflight 6453d22b4d593c0b428dacfe
- This should only change the hash when FArchiveCrc32::Serialize is called on buffers larger than MAX_int32 in size, which given the current use cases of FArchiveCrc32 is probably not occuring anywhere anyway.
- Found this issue when fixing truncation warnings.
- Serialize accepts data lengths of type int64 but FCrc::MemCrc32 would silently truncate the data to int32.
-- This doesn't result in the data being hashed up to length MAX_int32 as the iteration inside of MemCrc32 (at least in some implementations) uses a signed index, passing in larger values will result in this index being negative and our loop checks for that index being reduced to 0.
- To fix this we should call FCrc::MemCrc32 with the data length clamped to MAX_int32 and then make repeated calls until the entire buffer hash been hashed.
[CL 25384518 by paul chipchase in ue5-main branch]
#rb Per.Larsson
#jira none
#rnx
#preflight 6453ce50d863ba2621851360
- FCompressedBuffer will calculate the FIoHash of its data and FEditorBulkData can take the hash from there rather than calculating one itself. If you create one with no compression codec set you could use that to control when the hashing takes place before passing the data to FEditorBulkData.
- In the future we might change FEditorBulkData to hold its data in a FCompressedBuffer, allowing us to avoid decompressing the payload unless someone actually asks for it in uncompressed format.
- Added some unit tests
[CL 25352762 by paul chipchase in ue5-main branch]
#rb trivial
#jira none
#rnx
#preflight 644a2654877716c878058a9e
- Bumped BufferStartIndex to a int64 as it is used to store the offset into a TArray64.
[CL 25351178 by paul chipchase in ue5-main branch]
#rb trivial
#jira none
#rnx
#preflight 644a6b7f877716c8784935db
- LastDifferenceCallstackOffsetIndex was only ever being used as a int32 so changed it to that type.
[CL 25298576 by paul chipchase in ue5-main branch]