Rebase against 9353a36d8fc8bb400bc2227914db0f2e60a19c24.

This commit is contained in:
Sebastian Lackner 2015-06-29 19:40:20 +02:00
parent 8d92e1177f
commit 3b975fa4f2
10 changed files with 15 additions and 378 deletions

View File

@ -51,7 +51,7 @@ for more details.*
* Add HTTP Host header in HttpSendRequest instead of HttpOpenRequest ([Wine Bug #28911](https://bugs.winehq.org/show_bug.cgi?id=28911))
* Add a ProfileList\<UserSID> registry subkey ([Wine Bug #15670](https://bugs.winehq.org/show_bug.cgi?id=15670))
* Add implementation for CreateThreadpool ([Wine Bug #35192](https://bugs.winehq.org/show_bug.cgi?id=35192))
* Add implementation for kernel32.GetNumaProcessorNode ([Wine Bug #38660](https://bugs.winehq.org/show_bug.cgi?id=38660))
* ~~Add implementation for kernel32.GetNumaProcessorNode~~ ([Wine Bug #38660](https://bugs.winehq.org/show_bug.cgi?id=38660))
* Add implementation for mfplat.MFTRegister ([Wine Bug #37811](https://bugs.winehq.org/show_bug.cgi?id=37811))
* Add implementation for shlwapi.AssocGetPerceivedType
* Add nvapi stubs required for GPU PhysX support
@ -281,7 +281,7 @@ for more details.*
* Workaround for shlwapi URLs with relative paths
* XEMBED support for embedding Wine windows inside Linux applications
* eRacer Demo doesn't correctly display text ([Wine Bug #29598](https://bugs.winehq.org/show_bug.cgi?id=29598))
* msvcrt.strtod should initialize *end with NULL on failure
* ~~msvcrt.strtod should initialize *end with NULL on failure~~
* ntdll is missing WinSqm[Start|End]Session implementation ([Wine Bug #31971](https://bugs.winehq.org/show_bug.cgi?id=31971))
* wglDescribePixelFormat should return max index for NULL descriptor ([Wine Bug #6176](https://bugs.winehq.org/show_bug.cgi?id=6176))

7
debian/changelog vendored
View File

@ -1,3 +1,10 @@
wine-staging (1.7.47) UNRELEASED; urgency=low
* Removed patch to implement kernel32.GetNumaProcessorNode (accepted
upstream).
* Removed patch to initialize *end with NULL on failure in msvcrt.strtod
(accepted upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Mon, 29 Jun 2015 19:39:04 +0200
wine-staging (1.7.46) unstable; urgency=low
* Add reference to upstream bug report for various patchsets.
* Added patch to improve IoGetDeviceObjectPointer stub to appease SecuROM 5.x.

View File

@ -1,4 +1,4 @@
From 2f02387d53e803b7347d70ef8199bdd5c0d08732 Mon Sep 17 00:00:00 2001
From 4ecefb9629cb3121da17e7d9573c5134dcdc74c6 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 6 Oct 2014 05:06:06 +0200
Subject: dbghelp: Always check for debug symbols in BINDIR.
@ -9,7 +9,7 @@ Subject: dbghelp: Always check for debug symbols in BINDIR.
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/dlls/dbghelp/Makefile.in b/dlls/dbghelp/Makefile.in
index e5d40b1..cfb5b3e 100644
index e483693..03248a6 100644
--- a/dlls/dbghelp/Makefile.in
+++ b/dlls/dbghelp/Makefile.in
@@ -1,6 +1,6 @@
@ -19,7 +19,7 @@ index e5d40b1..cfb5b3e 100644
+EXTRADEFS = -D_IMAGEHLP_SOURCE_ -DDLLPREFIX='"$(DLLPREFIX)"' -DBINDIR="\"${bindir}\""
IMPORTS = psapi
DELAYIMPORTS = version
EXTRALIBS = $(Z_LIBS)
EXTRALIBS = $(Z_LIBS) $(CORESERVICES_LIBS) $(COREFOUNDATION_LIBS)
diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c
index b176143..8e22265 100644
--- a/dlls/dbghelp/elf_module.c
@ -40,5 +40,5 @@ index b176143..8e22265 100644
load_offset, dyn_addr, elf_info);
}
--
2.1.2
2.4.4

View File

@ -1,91 +0,0 @@
From 1683ee187a990a2c55cc6db9b5fac120ca1bbaca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 18 Oct 2014 06:00:48 +0200
Subject: kernel32/tests: Add tests for GetNumaProcessorNode. (v2)
Changes in v2:
* Remove separate dlls/kernel32/tests/cpu.c file.
* Fix test failure on WinXP.
---
dlls/kernel32/tests/process.c | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index 6660af4..b4a435b 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -3,6 +3,7 @@
*
* Copyright 2002 Eric Pouech
* Copyright 2006 Dmitry Timoshkov
+ * Copyright 2014 Michael Müller
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -74,6 +75,7 @@ static BOOL (WINAPI *pTerminateJobObject)(HANDLE job, UINT exit_code);
static BOOL (WINAPI *pQueryInformationJobObject)(HANDLE job, JOBOBJECTINFOCLASS class, LPVOID info, DWORD len, LPDWORD ret_len);
static BOOL (WINAPI *pSetInformationJobObject)(HANDLE job, JOBOBJECTINFOCLASS class, LPVOID info, DWORD len);
static HANDLE (WINAPI *pCreateIoCompletionPort)(HANDLE file, HANDLE existing_port, ULONG_PTR key, DWORD threads);
+static BOOL (WINAPI *pGetNumaProcessorNode)(UCHAR, PUCHAR);
/* ############################### */
static char base[MAX_PATH];
@@ -227,6 +229,7 @@ static BOOL init(void)
pQueryInformationJobObject = (void *)GetProcAddress(hkernel32, "QueryInformationJobObject");
pSetInformationJobObject = (void *)GetProcAddress(hkernel32, "SetInformationJobObject");
pCreateIoCompletionPort = (void *)GetProcAddress(hkernel32, "CreateIoCompletionPort");
+ pGetNumaProcessorNode = (void *)GetProcAddress(hkernel32, "GetNumaProcessorNode");
return TRUE;
}
@@ -2692,6 +2695,39 @@ static void test_StartupNoConsole(void)
#endif
}
+static void test_GetNumaProcessorNode(void)
+{
+ SYSTEM_INFO si;
+ UCHAR node;
+ BOOL ret;
+ int i;
+
+ if (!pGetNumaProcessorNode)
+ {
+ skip("GetNumaProcessorNode is missing\n");
+ return;
+ }
+
+ GetSystemInfo(&si);
+ for (i = 0; i < 256; i++)
+ {
+ SetLastError(0xdeadbeef);
+ node = (i < si.dwNumberOfProcessors) ? 0xFF : 0xAA;
+ ret = pGetNumaProcessorNode(i, &node);
+ if (i < si.dwNumberOfProcessors)
+ {
+ ok(ret, "GetNumaProcessorNode returned FALSE for processor %d\n", i);
+ ok(node != 0xFF, "expected node != 0xFF, but got 0xFF\n");
+ }
+ else
+ {
+ ok(!ret, "GetNumaProcessorNode returned TRUE for processor %d\n", i);
+ ok(node == 0xFF || broken(node == 0xAA) /* WinXP */, "expected node 0xFF, got %x\n", node);
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+ }
+ }
+}
+
START_TEST(process)
{
HANDLE job;
@@ -2741,6 +2777,7 @@ START_TEST(process)
test_RegistryQuota();
test_DuplicateHandle();
test_StartupNoConsole();
+ test_GetNumaProcessorNode();
/* things that can be tested:
* lookup: check the way program to be executed is searched
* handles: check the handle inheritance stuff (+sec options)
--
2.4.3

View File

@ -1,84 +0,0 @@
From a228108e82fd231729cc6656c443af35b4249b23 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 18 Oct 2014 05:57:32 +0200
Subject: kernel32: Implement GetNumaProcessorNode. (v2)
Changes in v2:
* Remove NULL-pointer check, it also crashes on Windows.
---
dlls/kernel32/cpu.c | 21 +++++++++++++++++++++
dlls/kernel32/kernel32.spec | 2 +-
dlls/kernel32/tests/process.c | 2 +-
include/winbase.h | 1 +
4 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/dlls/kernel32/cpu.c b/dlls/kernel32/cpu.c
index f48fcf0..dc61763 100644
--- a/dlls/kernel32/cpu.c
+++ b/dlls/kernel32/cpu.c
@@ -291,3 +291,24 @@ err:
}
return TRUE;
}
+
+/***********************************************************************
+ * GetNumaProcessorNode (KERNEL32.@)
+ */
+BOOL WINAPI GetNumaProcessorNode(UCHAR processor, PUCHAR node)
+{
+ SYSTEM_INFO si;
+
+ TRACE( "(%d, %p)\n", processor, node );
+
+ GetSystemInfo(&si);
+ if (processor < si.dwNumberOfProcessors)
+ {
+ *node = 0;
+ return TRUE;
+ }
+
+ *node = 0xFF;
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+}
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index f9a0770..7703f2c 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -746,7 +746,7 @@
@ stdcall GetNumaNodeProcessorMask(long ptr)
# @ stub GetNumaNodeProcessorMaskEx
# @ stub GetNumaProcessorMap
-# @ stub GetNumaProcessorNode
+@ stdcall GetNumaProcessorNode(long ptr)
# @ stub GetNumaProcessorNodeEx
# @ stub GetNumaProximityNode
# @ stub GetNumaProximityNodeEx
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index b4a435b..4145dce 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -2704,7 +2704,7 @@ static void test_GetNumaProcessorNode(void)
if (!pGetNumaProcessorNode)
{
- skip("GetNumaProcessorNode is missing\n");
+ win_skip("GetNumaProcessorNode is missing\n");
return;
}
diff --git a/include/winbase.h b/include/winbase.h
index cc1081e..f3249a7 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -2052,6 +2052,7 @@ WINBASEAPI BOOL WINAPI GetNamedPipeHandleStateW(HANDLE,LPDWORD,LPDWORD,LP
#define GetNamedPipeHandleState WINELIB_NAME_AW(GetNamedPipeHandleState)
WINBASEAPI BOOL WINAPI GetNamedPipeInfo(HANDLE,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
WINBASEAPI VOID WINAPI GetNativeSystemInfo(LPSYSTEM_INFO);
+WINBASEAPI BOOL WINAPI GetNumaProcessorNode(UCHAR, PUCHAR);
WINADVAPI BOOL WINAPI GetNumberOfEventLogRecords(HANDLE,PDWORD);
WINADVAPI BOOL WINAPI GetOldestEventLogRecord(HANDLE,PDWORD);
WINBASEAPI BOOL WINAPI GetOverlappedResult(HANDLE,LPOVERLAPPED,LPDWORD,BOOL);
--
2.4.3

View File

@ -1 +0,0 @@
Fixes: [38660] Add implementation for kernel32.GetNumaProcessorNode

View File

@ -1,109 +0,0 @@
From 5464947ce0bbc3f0da79231c5e366cd54d7888d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 8 Nov 2014 22:39:28 +0100
Subject: msvcrt: Avoid crash when NULL pointer is passed to atof / strtod
functions.
---
dlls/msvcrt/tests/string.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+)
diff --git a/dlls/msvcrt/tests/string.c b/dlls/msvcrt/tests/string.c
index 9920df0..1a3c598 100644
--- a/dlls/msvcrt/tests/string.c
+++ b/dlls/msvcrt/tests/string.c
@@ -89,6 +89,8 @@ static int (__cdecl *p_tolower)(int);
static size_t (__cdecl *p_mbrlen)(const char*, size_t, mbstate_t*);
static size_t (__cdecl *p_mbrtowc)(wchar_t*, const char*, size_t, mbstate_t*);
static int (__cdecl *p__atodbl_l)(_CRT_DOUBLE*,char*,_locale_t);
+static double (__cdecl *p__atof_l)(const char*,_locale_t);
+static double (__cdecl *p__strtod_l)(const char *,char**,_locale_t);
static int (__cdecl *p__strnset_s)(char*,size_t,int,size_t);
static int (__cdecl *p__wcsset_s)(wchar_t*,size_t,wchar_t);
@@ -1678,6 +1680,28 @@ static void test__strtod(void)
ok(almost_equal(d, 0), "d = %lf\n", d);
ok(end == white_chars, "incorrect end (%d)\n", (int)(end-white_chars));
+ if (!p__strtod_l)
+ win_skip("_strtod_l not found\n");
+ else
+ {
+ errno = EBADF;
+ d = strtod(NULL, NULL);
+ ok(almost_equal(d, 0.0), "d = %lf\n", d);
+ ok(errno == EINVAL, "errno = %x\n", errno);
+
+ errno = EBADF;
+ end = (char *)0xdeadbeef;
+ d = strtod(NULL, &end);
+ ok(almost_equal(d, 0.0), "d = %lf\n", d);
+ ok(errno == EINVAL, "errno = %x\n", errno);
+ todo_wine ok(!end, "incorrect end ptr %p\n", end);
+
+ errno = EBADF;
+ d = p__strtod_l(NULL, NULL, NULL);
+ ok(almost_equal(d, 0.0), "d = %lf\n", d);
+ ok(errno == EINVAL, "errno = %x\n", errno);
+ }
+
/* Set locale with non '.' decimal point (',') */
if(!setlocale(LC_ALL, "Polish")) {
win_skip("system with limited locales\n");
@@ -2721,6 +2745,36 @@ static void test_atoi(void)
ok(r == 0, "atoi(4294967296) = %d\n", r);
}
+static void test_atof(void)
+{
+ double d;
+
+ d = atof("0.0");
+ ok(almost_equal(d, 0.0), "d = %lf\n", d);
+
+ d = atof("1.0");
+ ok(almost_equal(d, 1.0), "d = %lf\n", d);
+
+ d = atof("-1.0");
+ ok(almost_equal(d, -1.0), "d = %lf\n", d);
+
+ if (!p__atof_l)
+ {
+ win_skip("_atof_l not found\n");
+ return;
+ }
+
+ errno = EBADF;
+ d = atof(NULL);
+ ok(almost_equal(d, 0.0), "d = %lf\n", d);
+ ok(errno == EINVAL, "errno = %x\n", errno);
+
+ errno = EBADF;
+ d = p__atof_l(NULL, NULL);
+ ok(almost_equal(d, 0.0), "d = %lf\n", d);
+ ok(errno == EINVAL, "errno = %x\n", errno);
+}
+
static void test_strncpy(void)
{
#define TEST_STRNCPY_LEN 10
@@ -2959,6 +3013,8 @@ START_TEST(string)
p_mbrtowc = (void*)GetProcAddress(hMsvcrt, "mbrtowc");
p_mbsrtowcs = (void*)GetProcAddress(hMsvcrt, "mbsrtowcs");
p__atodbl_l = (void*)GetProcAddress(hMsvcrt, "_atodbl_l");
+ p__atof_l = (void*)GetProcAddress(hMsvcrt, "_atof_l");
+ p__strtod_l = (void*)GetProcAddress(hMsvcrt, "_strtod_l");
p__strnset_s = (void*)GetProcAddress(hMsvcrt, "_strnset_s");
p__wcsset_s = (void*)GetProcAddress(hMsvcrt, "_wcsset_s");
@@ -3015,6 +3071,7 @@ START_TEST(string)
test__stricmp();
test__wcstoi64();
test_atoi();
+ test_atof();
test_strncpy();
test_strxfrm();
test__strnset_s();
--
2.4.3

View File

@ -1,45 +0,0 @@
From 826e80ab90bc03c4e156f3600ae8078b3c75e3ed Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 26 Jun 2015 10:35:50 +0200
Subject: msvcrt: Set *end to NULL when strtod is called with NULL pointer
string.
---
dlls/msvcrt/string.c | 7 +++++--
dlls/msvcrt/tests/string.c | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c
index fdeb4e0..980d492 100644
--- a/dlls/msvcrt/string.c
+++ b/dlls/msvcrt/string.c
@@ -317,8 +317,11 @@ static double strtod_helper(const char *str, char **end, MSVCRT__locale_t locale
if(err)
*err = 0;
- else
- if(!MSVCRT_CHECK_PMT(str != NULL)) return 0;
+ else if(!MSVCRT_CHECK_PMT(str != NULL)) {
+ if (end)
+ *end = NULL;
+ return 0;
+ }
if(!locale)
locinfo = get_locinfo();
diff --git a/dlls/msvcrt/tests/string.c b/dlls/msvcrt/tests/string.c
index 1a3c598..83de762 100644
--- a/dlls/msvcrt/tests/string.c
+++ b/dlls/msvcrt/tests/string.c
@@ -1694,7 +1694,7 @@ static void test__strtod(void)
d = strtod(NULL, &end);
ok(almost_equal(d, 0.0), "d = %lf\n", d);
ok(errno == EINVAL, "errno = %x\n", errno);
- todo_wine ok(!end, "incorrect end ptr %p\n", end);
+ ok(!end, "incorrect end ptr %p\n", end);
errno = EBADF;
d = p__strtod_l(NULL, NULL, NULL);
--
2.4.3

View File

@ -1 +0,0 @@
Fixes: msvcrt.strtod should initialize *end with NULL on failure

View File

@ -51,11 +51,11 @@ usage()
# Show version information
version()
{
echo "Wine Staging 1.7.46"
echo "Wine Staging 1.7.47 (unreleased)"
echo "Copyright (C) 2014-2015 the Wine Staging project authors."
echo ""
echo "Patchset to be applied on upstream Wine:"
echo " commit ae6efa469bfaecade30e160d195d607bdcdcc6ae"
echo " commit 9353a36d8fc8bb400bc2227914db0f2e60a19c24"
echo ""
}
@ -132,7 +132,6 @@ patch_enable_all ()
enable_kernel32_CopyFileEx="$1"
enable_kernel32_GetFinalPathNameByHandle="$1"
enable_kernel32_GetLogicalProcessorInformationEx="$1"
enable_kernel32_GetNumaProcessorNode="$1"
enable_kernel32_InsertMode="$1"
enable_kernel32_Named_Pipe="$1"
enable_kernel32_NeedCurrentDirectoryForExePath="$1"
@ -149,7 +148,6 @@ patch_enable_all ()
enable_mscoree_CorValidateImage="$1"
enable_msvcp90_basic_string_dtor="$1"
enable_msvcrt_Math_Precision="$1"
enable_msvcrt_atof_strtod="$1"
enable_msvfw32_Image_Size="$1"
enable_ntdll_APC_Performance="$1"
enable_ntdll_APC_Start_Process="$1"
@ -472,9 +470,6 @@ patch_enable ()
kernel32-GetLogicalProcessorInformationEx)
enable_kernel32_GetLogicalProcessorInformationEx="$2"
;;
kernel32-GetNumaProcessorNode)
enable_kernel32_GetNumaProcessorNode="$2"
;;
kernel32-InsertMode)
enable_kernel32_InsertMode="$2"
;;
@ -523,9 +518,6 @@ patch_enable ()
msvcrt-Math_Precision)
enable_msvcrt_Math_Precision="$2"
;;
msvcrt-atof_strtod)
enable_msvcrt_atof_strtod="$2"
;;
msvfw32-Image_Size)
enable_msvfw32_Image_Size="$2"
;;
@ -3001,23 +2993,6 @@ if test "$enable_kernel32_GetLogicalProcessorInformationEx" -eq 1; then
) >> "$patchlist"
fi
# Patchset kernel32-GetNumaProcessorNode
# |
# | This patchset fixes the following Wine bugs:
# | * [#38660] Add implementation for kernel32.GetNumaProcessorNode
# |
# | Modified files:
# | * dlls/kernel32/cpu.c, dlls/kernel32/kernel32.spec, dlls/kernel32/tests/process.c, include/winbase.h
# |
if test "$enable_kernel32_GetNumaProcessorNode" -eq 1; then
patch_apply kernel32-GetNumaProcessorNode/0001-kernel32-tests-Add-tests-for-GetNumaProcessorNode.-v.patch
patch_apply kernel32-GetNumaProcessorNode/0002-kernel32-Implement-GetNumaProcessorNode.-v2.patch
(
echo '+ { "Michael Müller", "kernel32/tests: Add tests for GetNumaProcessorNode.", 2 },';
echo '+ { "Michael Müller", "kernel32: Implement GetNumaProcessorNode.", 2 },';
) >> "$patchlist"
fi
# Patchset kernel32-InsertMode
# |
# | Modified files:
@ -3303,20 +3278,6 @@ if test "$enable_msvcrt_Math_Precision" -eq 1; then
) >> "$patchlist"
fi
# Patchset msvcrt-atof_strtod
# |
# | Modified files:
# | * dlls/msvcrt/string.c, dlls/msvcrt/tests/string.c
# |
if test "$enable_msvcrt_atof_strtod" -eq 1; then
patch_apply msvcrt-atof_strtod/0001-msvcrt-Avoid-crash-when-NULL-pointer-is-passed-to-at.patch
patch_apply msvcrt-atof_strtod/0002-msvcrt-Set-end-to-NULL-when-strtod-is-called-with-NU.patch
(
echo '+ { "Michael Müller", "msvcrt: Avoid crash when NULL pointer is passed to atof / strtod functions.", 1 },';
echo '+ { "Sebastian Lackner", "msvcrt: Set *end to NULL when strtod is called with NULL pointer string.", 1 },';
) >> "$patchlist"
fi
# Patchset msvfw32-Image_Size
# |
# | This patchset fixes the following Wine bugs: