diff --git a/TitanEngine/Global.Breakpoints.cpp b/TitanEngine/Global.Breakpoints.cpp index f4d78c3..738e05d 100644 --- a/TitanEngine/Global.Breakpoints.cpp +++ b/TitanEngine/Global.Breakpoints.cpp @@ -126,15 +126,10 @@ void BreakPointPostReadFilter(ULONG_PTR lpBaseAddress, unsigned char* lpBuffer, ULONG_PTR cur_addr=curBp->BreakPointAddress; for(SIZE_T j=0; jBreakPointSize; j++) { - if(cur_addr+j==start && cur_addr+j=start && cur_addr+jBreakPointSize-j; - if((cur_addr+n)>end) - n=end-cur_addr; //do not overflow the buffer - memcpy(lpBuffer+index, &curBp->OriginalByte[j], n); - if(n==curBp->BreakPointSize) - break; + memcpy(lpBuffer+index, &curBp->OriginalByte[j], sizeof(char)); } } } @@ -154,7 +149,7 @@ void BreakPointPreWriteFilter(ULONG_PTR lpBaseAddress, SIZE_T nSize, CriticalSec ULONG_PTR cur_addr=curBp->BreakPointAddress; for(SIZE_T j=0; jBreakPointSize; j++) { - if(cur_addr+j==start && cur_addr+j=start && cur_addr+junlock(); DisableBPX(cur_addr); @@ -180,7 +175,7 @@ void BreakPointPostWriteFilter(ULONG_PTR lpBaseAddress, SIZE_T nSize, CriticalSe ULONG_PTR cur_addr=curBp->BreakPointAddress; for(SIZE_T j=0; jBreakPointSize; j++) { - if(cur_addr+j==start && cur_addr+j=start && cur_addr+jBreakPointActive = UE_BPXINACTIVE; //little hack lock->unlock(); diff --git a/TitanEngine/Global.Engine.Threading.cpp b/TitanEngine/Global.Engine.Threading.cpp index a03bbe4..7dea371 100644 --- a/TitanEngine/Global.Engine.Threading.cpp +++ b/TitanEngine/Global.Engine.Threading.cpp @@ -2,37 +2,45 @@ #include "definitions.h" #include "Global.Engine.Threading.h" -static CRITICAL_SECTION locks[LockLast]; +static CRITICAL_SECTION locks[LockLast] = {}; +static bool bInitDone = false; -void CriticalSectionInitializeLocks() +static void CriticalSectionInitializeLocks() { + if(bInitDone) + return; for(int i=0; i