[PATCH] ntoskrnl.exe: Dont forward some msvcrt functions

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Sun Mar 18 01:40:13 CDT 2018


Fixes: https://bugs.winehq.org/show_bug.cgi?id=44496

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
 dlls/ntoskrnl.exe/ntoskrnl.c        | 49 +++++++++++++++++++++++++++++++++++++
 dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 12 ++++-----
 2 files changed, 55 insertions(+), 6 deletions(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 5701f856b1..63886583ec 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -3303,3 +3303,52 @@ PKEVENT WINAPI IoCreateNotificationEvent(UNICODE_STRING *name, HANDLE *handle)
     FIXME( "stub: %s %p\n", debugstr_us(name), handle );
     return NULL;
 }
+
+
+/*********************************************************************
+ *                  memcpy   (NTOSKRNL.@)
+ *
+ * NOTES
+ *  Behaves like memmove.
+ */
+void * __cdecl NTOSKRNL_memcpy( void *dst, const void *src, size_t n )
+{
+    return memmove( dst, src, n );
+}
+
+/*********************************************************************
+ *                  memset   (NTOSKRNL.@)
+ */
+void * __cdecl NTOSKRNL_memset( void *dst, int c, size_t n )
+{
+    return memset( dst, c, n );
+}
+
+int __cdecl _stricmp( LPCSTR str1, LPCSTR str2 )
+{
+    return strcasecmp( str1, str2 );
+}
+
+/*********************************************************************
+ *                  _strnicmp   (NTOSKRNL.@)
+ */
+int __cdecl _strnicmp( LPCSTR str1, LPCSTR str2, size_t n )
+{
+    return strncasecmp( str1, str2, n );
+}
+
+/*********************************************************************
+ *           _wcsnicmp    (NTOSKRNL.@)
+ */
+INT __cdecl NTOSKRNL__wcsnicmp( LPCWSTR str1, LPCWSTR str2, INT n )
+{
+    return strncmpiW( str1, str2, n );
+}
+
+/*********************************************************************
+ *           wcsncmp    (NTOSKRNL.@)
+ */
+INT __cdecl NTOSKRNL_wcsncmp( LPCWSTR str1, LPCWSTR str2, INT n )
+{
+    return strncmpW( str1, str2, n );
+}
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 31c3136b77..8c3057f06e 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -1424,9 +1424,9 @@
 @ cdecl -private _purecall() msvcrt._purecall
 @ varargs -private _snprintf(ptr long str) msvcrt._snprintf
 @ varargs -private _snwprintf(ptr long wstr) msvcrt._snwprintf
-@ cdecl -private _stricmp(str str) msvcrt._stricmp
+@ cdecl -private _stricmp(str str)
 @ cdecl -private _strlwr(str) msvcrt._strlwr
-@ cdecl -private _strnicmp(str str long) msvcrt._strnicmp
+@ cdecl -private _strnicmp(str str long) _strnicmp
 @ cdecl -private _strnset(str long long) msvcrt._strnset
 @ cdecl -private _strrev(str) msvcrt._strrev
 @ cdecl -private _strset(str long) msvcrt._strset
@@ -1435,7 +1435,7 @@
 @ cdecl -private _vsnwprintf(ptr long wstr ptr) msvcrt._vsnwprintf
 @ cdecl -private _wcsicmp(wstr wstr) msvcrt._wcsicmp
 @ cdecl -private _wcslwr(wstr) msvcrt._wcslwr
-@ cdecl -private _wcsnicmp(wstr wstr long) msvcrt._wcsnicmp
+@ cdecl -private _wcsnicmp(wstr wstr long) NTOSKRNL__wcsnicmp
 @ cdecl -private _wcsnset(wstr long long) msvcrt._wcsnset
 @ cdecl -private _wcsrev(wstr) msvcrt._wcsrev
 @ cdecl -private _wcsupr(wstr) msvcrt._wcsupr
@@ -1450,9 +1450,9 @@
 @ cdecl -private mbstowcs(ptr str long) msvcrt.mbstowcs
 @ cdecl -private mbtowc(ptr str long) msvcrt.mbtowc
 @ cdecl -private memchr(ptr long long) msvcrt.memchr
-@ cdecl -private memcpy(ptr ptr long) msvcrt.memcpy
+@ cdecl -private memcpy(ptr ptr long) NTOSKRNL_memcpy
 @ cdecl -private memmove(ptr ptr long) msvcrt.memmove
-@ cdecl -private memset(ptr long long) msvcrt.memset
+@ cdecl -private memset(ptr long long) NTOSKRNL_memset
 @ cdecl -private qsort(ptr long long ptr) msvcrt.qsort
 @ cdecl -private rand() msvcrt.rand
 @ varargs -private sprintf(ptr str) msvcrt.sprintf
@@ -1483,7 +1483,7 @@
 @ cdecl -private wcscspn(wstr wstr) msvcrt.wcscspn
 @ cdecl -private wcslen(wstr) msvcrt.wcslen
 @ cdecl -private wcsncat(wstr wstr long) msvcrt.wcsncat
-@ cdecl -private wcsncmp(wstr wstr long) msvcrt.wcsncmp
+@ cdecl -private wcsncmp(wstr wstr long) NTOSKRNL_wcsncmp
 @ cdecl -private wcsncpy(ptr wstr long) msvcrt.wcsncpy
 @ cdecl -private wcsrchr(wstr long) msvcrt.wcsrchr
 @ cdecl -private wcsspn(wstr wstr) msvcrt.wcsspn
-- 
2.16.2




More information about the wine-devel mailing list