From aaa8350591e2c3ec41fb4a437fa41fb28f5470de Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Wed, 15 Jul 2015 22:24:35 +0200 Subject: [PATCH] Windows: Fix some remaining ASLR issues --- Core/MIPS/x86/Jit.cpp | 6 ++++++ Windows/GEDebugger/SimpleGLWindow.cpp | 2 +- Windows/W32Util/PropertySheet.cpp | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Core/MIPS/x86/Jit.cpp b/Core/MIPS/x86/Jit.cpp index 84d270e00d..e381efc04e 100644 --- a/Core/MIPS/x86/Jit.cpp +++ b/Core/MIPS/x86/Jit.cpp @@ -290,7 +290,13 @@ void Jit::UpdateRoundingMode(XEmitter *emitter) // This is the most common situation. emitter->TEST(32, M(&mips_->fcr31), Imm32(0x01000003)); FixupBranch skip = emitter->J_CC(CC_Z); +#ifdef _M_X64 + // TODO: Move the hasSetRounding flag somewhere we can reach it through the context pointer, or something. + emitter->MOV(64, R(RAX), Imm64((uintptr_t)&js.hasSetRounding)); + emitter->MOV(8, MatR(RAX), Imm8(1)); +#else emitter->MOV(8, M(&js.hasSetRounding), Imm8(1)); +#endif emitter->SetJumpTarget(skip); } } diff --git a/Windows/GEDebugger/SimpleGLWindow.cpp b/Windows/GEDebugger/SimpleGLWindow.cpp index 74a4da56cd..8f24b65179 100644 --- a/Windows/GEDebugger/SimpleGLWindow.cpp +++ b/Windows/GEDebugger/SimpleGLWindow.cpp @@ -69,7 +69,7 @@ static const char basic_vs[] = SimpleGLWindow::SimpleGLWindow(HWND wnd) : hWnd_(wnd), valid_(false), drawProgram_(nullptr), tex_(0), flags_(0), zoom_(false), dragging_(false), offsetX_(0), offsetY_(0), reformatBuf_(nullptr) { - SetWindowLongPtr(wnd, GWLP_USERDATA, (LONG) this); + SetWindowLongPtr(wnd, GWLP_USERDATA, (LONG_PTR) this); } SimpleGLWindow::~SimpleGLWindow() { diff --git a/Windows/W32Util/PropertySheet.cpp b/Windows/W32Util/PropertySheet.cpp index 1254b64b0b..0ca68dcedd 100644 --- a/Windows/W32Util/PropertySheet.cpp +++ b/Windows/W32Util/PropertySheet.cpp @@ -150,7 +150,7 @@ namespace W32Util } LPARAM l = ((LPPROPSHEETPAGE)lParam)->lParam; tab = (Tab *)l; - SetWindowLongPtr(hDlg, GWLP_USERDATA, (DWORD_PTR)l); + SetWindowLongPtr(hDlg, GWLP_USERDATA, (LONG_PTR)l); tab->Init(hDlg); } break;