diff options
author | Jesse Talavera-Greenberg <jesse@jesse.tg> | 2023-09-15 09:31:05 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-15 15:31:05 +0200 |
commit | db963aa002cdf943c86d19f8abd3f4fd40be38ec (patch) | |
tree | bded72c0147f3749d3f346266ed4b1321e3b2979 /src/ARMJIT.cpp | |
parent | 1aaf22d181e55abb8ad27be89ebae106b1c1cfcf (diff) |
Make the NDS teardown more robust (#1798)
* Make cleanup a little more robust to mitigate undefined behavior
- Add some null checks before cleaning up the GPU3D renderer
- Make sure that all deleted objects are null
- Move cleanup logic out of an assert call
- Note that deleting a null pointer is a no-op, so there's no need to check for null beforehand
- Use RAII for GLCompositor instead of Init/DeInit methods
* Replace a DeInit call that I missed
* Make ARMJIT_Memory less likely to generate errors
- Set FastMem7/9Start to nullptr at the end
- Only close and unmap the file if it's initialized
* Make Renderer3D manage its resources with RAII
* Don't try to deallocate frontend resources that aren't loaded
* Make ARMJIT_Memory::DeInit more robust on the Switch
* Reset MemoryFile on Windows to INVALID_HANDLE_VALUE, not nullptr
- There is a difference
* Don't explicitly store a Valid state in GLCompositor or the 3D renderers
- Instead, create them with static methods while making the actual constructors private
* Make initialization of OpenGL resources fail if OpenGL isn't loaded
* assert that OpenGL is loaded instead of returning failure
Diffstat (limited to 'src/ARMJIT.cpp')
-rw-r--r-- | src/ARMJIT.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/ARMJIT.cpp b/src/ARMJIT.cpp index 7a4cdc6..77bb50d 100644 --- a/src/ARMJIT.cpp +++ b/src/ARMJIT.cpp @@ -330,6 +330,7 @@ void DeInit() ARMJIT_Memory::DeInit(); delete JITCompiler; + JITCompiler = nullptr; } void Reset() |