skyline/app
Billy Laws 99b5fc35c6
Change SegmentTable semantics to respect unset entries
Accesses to unset entries is now clearly defined as returning a 0'd out value, the prior behavior would be to optimize sets for border segments to use L2 atomicity when the specific segment had no L1 entries set. This would lead to any future lookups of offsets within the same L2 segment but a different L1 entry to incorrectly return an inaccurate value as the only prior guarantee was that lookups after setting a segment would return the same value as was set but lacked the guarantee for unset segments to also consistently return unset values.

This could lead to issues in practical usages such as the `BufferManager` lookups returning the existence of a `Buffer` at a location falsely even though the segment was never set to the value, this was problematic as raw pointers were utilized and bound checks would lead to a segmentation fault.

This commit fixes this issue by introducing this guarantee and refactoring the class accordingly, it also deletes the `Set` method for setting a single entry as the meaning is ambiguous and it's functionality was more akin to the past guarantee and no longer makes sense.

Co-authored-by: PixelyIon <pixelyion@protonmail.com>
2022-08-06 22:20:54 +05:30
..
libraries Remove PugiXML submodule 2022-07-26 20:16:24 +05:30
src/main Change SegmentTable semantics to respect unset entries 2022-08-06 22:20:54 +05:30
.gitignore libNX FS Initalization (v0.3) 2019-10-18 16:22:38 +05:30
build.gradle Only set hasFragileUserData for signed builds 2022-08-06 22:18:42 +05:30
CMakeLists.txt Add utilities for reading and installing gpu driver packages 2022-08-06 22:00:19 +05:30
proguard-rules.pro Add kotlinx.serialization-json dependencies 2022-08-06 22:00:19 +05:30