3.1 KiB
3.1 KiB
libSceJson2 technical debt
Unknown function info
- sce::Json::Parser::parse with a read callback (libSceJson2) - the callback's contract is taken from PPSA04540's: it returns 0 with the next character, and at the end of its data writes
'\0'and returns -1. Characters are read until the callback returns non-zero or gives'\0', and the text read is then parsed as by the(text, size)overload, so trailing characters after the value are rejected as there. Whether the console stops reading at the end of the top-level value, and what it returns when the callback fails before the end, are unknown - sce::Json::Parser::parse (libSceJson2) - a number that overflows a double (e.g.
1e309) throws: whether the console rejects the document or stores an infinite real is unknown - sce::Json::InitParameter2, InitParameterRtti and InitParameterRtti2 (libSceJson2) - layouts inferred, not known.
InitParameter2is taken as the 40-byte object of SharpEmu and KytyPS5: the allocator, its user data, the file buffer size, the 32-bit special float format type at 0x18 and 12 bytes both zero, and both constructors zero all of it.InitParameterRtti2::setAllocatorRttiwrites the allocation parameters and user data wheresetAllocatorwrites the allocator, as both references do; whether the console also marks the object as using RTTI allocation is unknown.InitParameterRtti's constructor writes the allocation parameters, user data and file buffer size to the first 24 bytes, an order inferred from its mangled arguments. The values ofSpecialFloatFormatTypeand what they select are unknown, sosetSpecialFloatFormatTypestores any value and nothing reads it:Initializer::initialize(InitParameter2)ignores every field asinitialize(InitParameter)does, serializing a non-finite real throws whatever the type, and whether the type lets the parser accept NaN or infinity is unknown. The setters return nothing; whether the console's returnthisis unknown
Functional
- PPSA30601 imports declared without parameters, signatures unknown, added without an implementation because the title fails to load without them: six sce::Json::Object::Pair, sce::Json::Object and sce::Json::Array::iterator members (libSceJson2), sceMouseResetAbsolutePosition (libSceMouse) and sceSaveDataDirNameSearch2 (libSceSaveData.native)
- sce::Json::InitParameter2 base-object constructor (libSceJson2) - forwards to the complete-object constructor and uses its inferred layout and default field values; constructor equivalence and initialization bytes remain unverified on the console