From e06889069c82aabafc5df3181191754ad6c25c6e Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Mon, 14 Oct 2013 22:05:33 -0700 Subject: [PATCH 1/2] Don't use the destructor to free thread stacks. If we do, kernelObjects.clear() will trash perfectly good memory on loading a state. I guess it also makes shutdown slower. Fixes #4186. --- Core/HLE/sceKernelThread.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Core/HLE/sceKernelThread.cpp b/Core/HLE/sceKernelThread.cpp index d594443130..3602fdbce0 100644 --- a/Core/HLE/sceKernelThread.cpp +++ b/Core/HLE/sceKernelThread.cpp @@ -487,7 +487,8 @@ public: currentStack.start = 0; } - ~Thread() + // Can't use a destructor since savestates will call that too. + void Cleanup() { // Callbacks are automatically deleted when their owning thread is deleted. for (auto it = callbacks.begin(), end = callbacks.end(); it != end; ++it) @@ -1798,6 +1799,8 @@ u32 __KernelDeleteThread(SceUID threadID, int exitStatus, const char *reason) if (callback && callback->nc.notifyCount != 0) readyCallbacksCount--; } + + t->Cleanup(); } return kernelObjects.Destroy(threadID); From 9fe1a99ab333975e40dffcb7aee5a3418faebdb3 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Mon, 14 Oct 2013 22:08:55 -0700 Subject: [PATCH 2/2] Fix some warnings. --- GPU/Directx9/helper/global.cpp | 12 ++++++------ Windows/Debugger/CtrlDisAsmView.cpp | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/GPU/Directx9/helper/global.cpp b/GPU/Directx9/helper/global.cpp index 47ed09701c..0a48fa6bda 100644 --- a/GPU/Directx9/helper/global.cpp +++ b/GPU/Directx9/helper/global.cpp @@ -74,8 +74,8 @@ LPDIRECT3DPIXELSHADER9 pFramebufferPixelShader = NULL; // Pixel Shader bool CompilePixelShader(const char * code, LPDIRECT3DPIXELSHADER9 * pShader, LPD3DXCONSTANTTABLE * pShaderTable) { LPD3DXCONSTANTTABLE shaderTable = *pShaderTable; - ID3DXBuffer* pShaderCode; - ID3DXBuffer* pErrorMsg; + ID3DXBuffer* pShaderCode = NULL; + ID3DXBuffer* pErrorMsg = NULL; HRESULT hr = -1; @@ -111,8 +111,8 @@ bool CompilePixelShader(const char * code, LPDIRECT3DPIXELSHADER9 * pShader, LPD bool CompileVertexShader(const char * code, LPDIRECT3DVERTEXSHADER9 * pShader, LPD3DXCONSTANTTABLE * pShaderTable) { LPD3DXCONSTANTTABLE shaderTable = *pShaderTable; - ID3DXBuffer* pShaderCode; - ID3DXBuffer* pErrorMsg; + ID3DXBuffer* pShaderCode = NULL; + ID3DXBuffer* pErrorMsg = NULL; HRESULT hr = -1; @@ -146,8 +146,8 @@ bool CompileVertexShader(const char * code, LPDIRECT3DVERTEXSHADER9 * pShader, L } void CompileShaders() { - ID3DXBuffer* pShaderCode; - ID3DXBuffer* pErrorMsg; + ID3DXBuffer* pShaderCode = NULL; + ID3DXBuffer* pErrorMsg = NULL; HRESULT hr = -1; #ifdef _XBOX diff --git a/Windows/Debugger/CtrlDisAsmView.cpp b/Windows/Debugger/CtrlDisAsmView.cpp index 36036360ba..5caa60abbf 100644 --- a/Windows/Debugger/CtrlDisAsmView.cpp +++ b/Windows/Debugger/CtrlDisAsmView.cpp @@ -1141,7 +1141,7 @@ void CtrlDisAsmView::search(bool continueSearch) return; } - for (int i = 0; i < searchQuery.size(); i++) + for (size_t i = 0; i < searchQuery.size(); i++) { searchQuery[i] = tolower(searchQuery[i]); }