#rb Per.Larsson
#rnx
- If archive is corrupt we could serialize an unreasonable value for the payload size from disk. This could cause very large allocations to be made which could cause the process to OOM or to allocate resources that it doesn't need.
- To avoid this we can check the archive we are serializing from and make sure that, at the very least, it will be possible to load all of the payload bytes from it. This way we will never make an allocation larger than the remaining space in the archive. It would then be up to the higher level code to validate that overall size of the provided file makes sense.
- Note that we are not able to do this is we are loading a payload from legacy bulkdata format that was marked as compressed as we only know the uncompressed payload size, not the compressed size on disk.
[CL 32755840 by paul chipchase in ue5-main branch]
This ensures that the 'keys' culture shows the text as localizable, even if there's no translation data available for it yet
#rb Leon.Huang
#rnx
[CL 32742101 by jamie dale in ue5-main branch]
Fixed the names of the UE class properties to match BPVM.
Fixed missing dll exports on the verse value property
#rnx
#rb russell.johnston, yiliang.siew
[CL 32724202 by tim smith in ue5-main branch]
- Rename the CoreVerseVM to CorePreciseFP to better reflect its purpose.
#rb fabian.giesen, Steve.Robb, Tim.Smith
[CL 32696889 by andrew scheidecker in ue5-main branch]
Visit this property and allows recursion into the inner properties
This allows you to visit inner properties without knowing about its container type as opposed to TPropertyIterator.
This visit property pattern facilitate the recursion into users defined properties and allows users to add specific visit logic on UStruct via traits.
#rb Devin.Doucette, logan.buchy, Yoan.StAmant
[CL 32696068 by maxime mercier in ue5-main branch]
Defer blocks run for one of several reasons: normal block exit, exit via break or return, or (not yet implemented) task cancellation. To accommodate this, defer bytecode accepts a jump target index and switches on it after running. This index is stored in a register allocated for the defer block, which is sufficient because defers are not re-entrant. The register and switch are elided when the block runs only on the normal exit path.
The switch instruction has a variadic label operand. To simplify label fixup, all variadic operands are moved from `TArray` fields in the instructions to a shared trailing array in `VProcedure`. (Variadic operands to suspension captures remain `TArray`s.)
Early exit may cross several defer blocks on the way to its eventual jump target. Each defer block wraps these jump targets in a thunk, which passes the index for the wrapped target to the defer block. Exit control flow thus executes a chain of these thunks, ending with the actual exit jump when it reaches the appropriate scope.
#rb Markus.Breyer, Tim.Smith
[CL 32670628 by russell johnston in ue5-main branch]
- Added struct trait, WithClearOnFinishDestroy which cause the struct to be cleared during owning UObject's FinishDestroy()
- Added FProperty::ContainsFinishDestroy(), which redursively checks if the property or its children requires FinishDestroy() to be called
- Added FProperty::FinishDestroy() which recursively calls FinishDestroy(), struct propertys FinishDestroy() clears the struct if specified in the traits
- UStruct::Link() adds properties requiring finish destrou to the DestructLink
- Changed UObject::DestroyNonNativeProperties() to call FinishDestroy() on native properties in DestructorLink
- Added WithClearOnFinishDestroy to FInstancedStruct so that the contained value is destroyed safely in the case that the owning UObject and UScriptStruct are GC'd at the same time.
#rb Steve.Robb
[CL 32659438 by mikko mononen in ue5-main branch]
[Backout] - CL32570115
[FYI] bob.tellez
Original CL Desc
-----------------------------------------------------------------
[Backout] - CL32554750
[FYI] jordan.hoffmann
Original CL Desc
-----------------------------------------------------------------
[BugFix] changes made to IDOs in the details panel correctly mark the package dirty and save now.
[Refactor] IDOs and their Instances now share the same override set
[Feature] added FPropertyBagRepository::FindOwnerForInstanceDataObject method for reverse lookup
[Refactor] chanced some uses of UObjectBase* to UObject* in PropertyBagRespository to simplify code
#rb Phillip.Kavan, Francis.Hurteau, Andrew.Davidson
#jira UE-210574
[CL 32653950 by jordan hoffmann in ue5-main branch]
This allows a package export to still load its data to a property bag in this scenario.
#jira UE-209835
#rb Francis.Hurteau
[CL 32653262 by phillip kavan in ue5-main branch]