diff options
Diffstat (limited to 'src/inc/regdisp.h')
-rw-r--r-- | src/inc/regdisp.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/inc/regdisp.h b/src/inc/regdisp.h index 7875edf653..4a7e57e63d 100644 --- a/src/inc/regdisp.h +++ b/src/inc/regdisp.h @@ -95,7 +95,11 @@ struct REGDISPLAY : public REGDISPLAY_BASE { #define REG_METHODS(reg) \ inline PDWORD Get##reg##Location(void) { return pCurrentContextPointers->reg; } \ - inline void Set##reg##Location(PDWORD p##reg) { pCurrentContextPointers->reg = p##reg; } + inline void Set##reg##Location(PDWORD p##reg) \ + { \ + pCurrentContextPointers->reg = p##reg; \ + pCurrentContext->reg = *p##reg; \ + } #endif // WIN64EXCEPTIONS @@ -115,8 +119,11 @@ struct REGDISPLAY : public REGDISPLAY_BASE { inline TADDR GetRegdisplayFP(REGDISPLAY *display) { LIMITED_METHOD_DAC_CONTRACT; - +#ifdef WIN64EXCEPTIONS + return (TADDR)display->pCurrentContext->Ebp; +#else return (TADDR)*display->GetEbpLocation(); +#endif } inline LPVOID GetRegdisplayFPAddress(REGDISPLAY *display) { |