Module: wine Branch: master Commit: 0235e5146529d3d7eb257b2b3e5cc36bc2c77dbd URL: https://source.winehq.org/git/wine.git/?a=commit;h=0235e5146529d3d7eb257b2b3...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Dec 10 11:12:20 2019 +0100
kernelbase: Add IsBadStringPtr() replacement functions.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernelbase/memory.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+)
diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c index 465a57209b..83805ece45 100644 --- a/dlls/kernelbase/memory.c +++ b/dlls/kernelbase/memory.c @@ -390,6 +390,42 @@ BOOL WINAPI DECLSPEC_HOTPATCH WriteProcessMemory( HANDLE process, void *addr, co }
+/* IsBadStringPtrA replacement for kernelbase, to catch exception in debug traces. */ +BOOL WINAPI IsBadStringPtrA( LPCSTR str, UINT_PTR max ) +{ + if (!str) return TRUE; + __TRY + { + volatile const char *p = str; + while (p != str + max) if (!*p++) break; + } + __EXCEPT_PAGE_FAULT + { + return TRUE; + } + __ENDTRY + return FALSE; +} + + +/* IsBadStringPtrW replacement for kernelbase, to catch exception in debug traces. */ +BOOL WINAPI IsBadStringPtrW( LPCWSTR str, UINT_PTR max ) +{ + if (!str) return TRUE; + __TRY + { + volatile const WCHAR *p = str; + while (p != str + max) if (!*p++) break; + } + __EXCEPT_PAGE_FAULT + { + return TRUE; + } + __ENDTRY + return FALSE; +} + + /*********************************************************************** * Heap functions ***********************************************************************/