Rebase against 0d91274defcf65093957cf8e43985b9be55642d5.

This commit is contained in:
Sebastian Lackner 2015-05-19 05:25:23 +02:00
parent 0defa32dfb
commit 9573b57d3c
31 changed files with 1448 additions and 2149 deletions

View File

@ -110,7 +110,7 @@ for more details.*
* D3DCompileShader should filter specific warning messages ([Wine Bug #33770](https://bugs.winehq.org/show_bug.cgi?id=33770))
* Dirtify vertex shader on transformed update to fix graphical corruption ([Wine Bug #38539](https://bugs.winehq.org/show_bug.cgi?id=38539))
* Do not append duplicate NULL characters when importing keys with regedit ([Wine Bug #37575](https://bugs.winehq.org/show_bug.cgi?id=37575))
* Do not create foreign thread queues for attach_thread_input requests ([Wine Bug #38562](https://bugs.winehq.org/show_bug.cgi?id=38562))
* ~~Do not create foreign thread queues for attach_thread_input requests~~ ([Wine Bug #38562](https://bugs.winehq.org/show_bug.cgi?id=38562))
* Do not fail when a used context is passed to wglShareLists ([Wine Bug #11436](https://bugs.winehq.org/show_bug.cgi?id=11436))
* Emulate access to KI_USER_SHARED_DATA kernel page on x86_64 ([Wine Bug #33849](https://bugs.winehq.org/show_bug.cgi?id=33849))
* Enforce that surfaces are flushed after ReleaseDC
@ -121,7 +121,7 @@ for more details.*
* FEAR 1 installer expects basic_string_wchar_dtor to return NULL ([Wine Bug #37358](https://bugs.winehq.org/show_bug.cgi?id=37358))
* Fallback to global key state for threads without a queue ([Wine Bug #27238](https://bugs.winehq.org/show_bug.cgi?id=27238))
* Fix NULL dereference in ICSeqCompressFrameStart ([Wine Bug #27595](https://bugs.winehq.org/show_bug.cgi?id=27595))
* Fix access violation when calling GetStringTypeW with NULL src. ([Wine Bug #37759](https://bugs.winehq.org/show_bug.cgi?id=37759))
* ~~Fix access violation when calling GetStringTypeW with NULL src.~~ ([Wine Bug #37759](https://bugs.winehq.org/show_bug.cgi?id=37759))
* Fix black screen on startup introduced by pixelformat changes. ([Wine Bug #35950](https://bugs.winehq.org/show_bug.cgi?id=35950))
* Fix caps lock state issues with multiple processes ([Wine Bug #35907](https://bugs.winehq.org/show_bug.cgi?id=35907))
* Fix comparison of punctuation characters in lstrcmp ([Wine Bug #10767](https://bugs.winehq.org/show_bug.cgi?id=10767))
@ -213,7 +213,7 @@ for more details.*
* Process Hacker 2.x needs ntoskrnl.ProbeForRead ([Wine Bug #38103](https://bugs.winehq.org/show_bug.cgi?id=38103))
* Python PIP needs better NtQueryInformationJobObject stub
* Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates)
* Reset device state in SysKeyboard*Impl_Acquire ([Wine Bug #11607](https://bugs.winehq.org/show_bug.cgi?id=11607))
* ~~Reset device state in SysKeyboard*Impl_Acquire~~ ([Wine Bug #11607](https://bugs.winehq.org/show_bug.cgi?id=11607))
* Return an error when trying to open a terminated process ([Wine Bug #37087](https://bugs.winehq.org/show_bug.cgi?id=37087))
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](https://bugs.winehq.org/show_bug.cgi?id=23174))
* Return correct device type for cd devices without medium
@ -244,7 +244,7 @@ for more details.*
* Support for H264 DXVA2 GPU video decoding through vaapi
* Support for ID3DXFont::DrawTextA/W ([Wine Bug #24754](https://bugs.winehq.org/show_bug.cgi?id=24754))
* Support for ID3DXSkinInfoImpl_UpdateSkinnedMesh ([Wine Bug #32572](https://bugs.winehq.org/show_bug.cgi?id=32572))
* Support for ITextDocument_fnRange function ([Wine Bug #12458](https://bugs.winehq.org/show_bug.cgi?id=12458))
* ~~Support for ITextDocument_fnRange function~~ ([Wine Bug #12458](https://bugs.winehq.org/show_bug.cgi?id=12458))
* Support for ITextRange, ITextFont and ITextPara ([Wine Bug #18303](https://bugs.winehq.org/show_bug.cgi?id=18303))
* Support for Junction Points ([Wine Bug #12401](https://bugs.winehq.org/show_bug.cgi?id=12401))
* Support for KF_FLAG_DEFAULT_PATH in SHGetKnownFolderPath ([Wine Bug #30385](https://bugs.winehq.org/show_bug.cgi?id=30385))

View File

@ -1,96 +0,0 @@
From f5c29408aee51ad967cf7aa02578c72d3b573198 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 11 Apr 2015 10:06:05 +0200
Subject: dinput: Reset device state in SysKeyboard*Impl_Acquire.
---
dlls/dinput/keyboard.c | 27 +++++++++++++++++++++++++--
dlls/dinput/tests/keyboard.c | 20 ++++++++++++++++++++
2 files changed, 45 insertions(+), 2 deletions(-)
diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c
index a5967d7..f3ac30e 100644
--- a/dlls/dinput/keyboard.c
+++ b/dlls/dinput/keyboard.c
@@ -527,6 +527,29 @@ static HRESULT WINAPI SysKeyboardAImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface,
return SysKeyboardWImpl_GetProperty(IDirectInputDevice8W_from_impl(This), rguid, pdiph);
}
+static HRESULT WINAPI SysKeyboardWImpl_Acquire(LPDIRECTINPUTDEVICE8W iface)
+{
+ SysKeyboardImpl *This = impl_from_IDirectInputDevice8W(iface);
+ HRESULT res;
+
+ TRACE("(%p)\n", This);
+
+ res = IDirectInputDevice2WImpl_Acquire(iface);
+ if (res == DI_OK)
+ {
+ TRACE("clearing keystate\n");
+ memset(This->DInputKeyState, 0, sizeof(This->DInputKeyState));
+ }
+
+ return res;
+}
+
+static HRESULT WINAPI SysKeyboardAImpl_Acquire(LPDIRECTINPUTDEVICE8A iface)
+{
+ SysKeyboardImpl *This = impl_from_IDirectInputDevice8A(iface);
+ return SysKeyboardWImpl_Acquire(IDirectInputDevice8W_from_impl(This));
+}
+
static HRESULT WINAPI SysKeyboardWImpl_BuildActionMap(LPDIRECTINPUTDEVICE8W iface,
LPDIACTIONFORMATW lpdiaf,
LPCWSTR lpszUserName,
@@ -615,7 +638,7 @@ static const IDirectInputDevice8AVtbl SysKeyboardAvt =
IDirectInputDevice2AImpl_EnumObjects,
SysKeyboardAImpl_GetProperty,
IDirectInputDevice2AImpl_SetProperty,
- IDirectInputDevice2AImpl_Acquire,
+ SysKeyboardAImpl_Acquire,
IDirectInputDevice2AImpl_Unacquire,
SysKeyboardAImpl_GetDeviceState,
IDirectInputDevice2AImpl_GetDeviceData,
@@ -651,7 +674,7 @@ static const IDirectInputDevice8WVtbl SysKeyboardWvt =
IDirectInputDevice2WImpl_EnumObjects,
SysKeyboardWImpl_GetProperty,
IDirectInputDevice2WImpl_SetProperty,
- IDirectInputDevice2WImpl_Acquire,
+ SysKeyboardWImpl_Acquire,
IDirectInputDevice2WImpl_Unacquire,
SysKeyboardWImpl_GetDeviceState,
IDirectInputDevice2WImpl_GetDeviceData,
diff --git a/dlls/dinput/tests/keyboard.c b/dlls/dinput/tests/keyboard.c
index ef5f06a..eaec276 100644
--- a/dlls/dinput/tests/keyboard.c
+++ b/dlls/dinput/tests/keyboard.c
@@ -91,6 +91,26 @@ static void acquire_tests(IDirectInputA *pDI, HWND hwnd)
for (i = 0; i < sizeof(custom_state) / sizeof(custom_state[0]); i++)
ok(custom_state[i] == 0, "Should be zeroed, got 0x%08x\n", custom_state[i]);
+ /* simulate some keyboard input */
+ SetFocus(hwnd);
+ keybd_event('Q', 0, 0, 0);
+ hr = IDirectInputDevice_GetDeviceState(pKeyboard, sizeof(custom_state), custom_state);
+ ok(SUCCEEDED(hr), "IDirectInputDevice_GetDeviceState(4,) failed: %08x\n", hr);
+ if (!custom_state[0])
+ win_skip("Keyboard event not processed, skipping test\n");
+ else
+ {
+ /* unacquiring should reset the device state */
+ hr = IDirectInputDevice_Unacquire(pKeyboard);
+ ok(SUCCEEDED(hr), "IDirectInputDevice_Unacquire() failed: %08x\n", hr);
+ hr = IDirectInputDevice_Acquire(pKeyboard);
+ ok(SUCCEEDED(hr), "IDirectInputDevice_Acquire() failed: %08x\n", hr);
+ hr = IDirectInputDevice_GetDeviceState(pKeyboard, sizeof(custom_state), custom_state);
+ ok(SUCCEEDED(hr), "IDirectInputDevice_GetDeviceState failed: %08x\n", hr);
+ for (i = 0; i < sizeof(custom_state) / sizeof(custom_state[0]); i++)
+ ok(custom_state[i] == 0, "Should be zeroed, got 0x%08x\n", custom_state[i]);
+ }
+
if (pKeyboard) IUnknown_Release(pKeyboard);
}
--
2.3.5

View File

@ -1,2 +0,0 @@
Fixes: [11607] Reset device state in SysKeyboard*Impl_Acquire
Category: stable

View File

@ -1,57 +0,0 @@
From 62e504c9dcad87ffd419b5bb157c88342934ff61 Mon Sep 17 00:00:00 2001
From: Christian Faure <christian.faurebouvard@gmail.com>
Date: Tue, 23 Dec 2014 13:13:49 -0300
Subject: kernel32: Allow empty source in GetStringTypeW.
---
dlls/kernel32/locale.c | 5 +++++
dlls/kernel32/tests/locale.c | 10 ++++++++++
2 files changed, 15 insertions(+)
diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c
index 1460f7a..30f9048 100644
--- a/dlls/kernel32/locale.c
+++ b/dlls/kernel32/locale.c
@@ -2479,6 +2479,11 @@ BOOL WINAPI GetStringTypeW( DWORD type, LPCWSTR src, INT count, LPWORD chartype
C2_OTHERNEUTRAL /* LRE, LRO, RLE, RLO, PDF */
};
+ if (!src) /* Abort and return FALSE when src is null */
+ {
+ SetLastError( ERROR_INVALID_PARAMETER );
+ return FALSE;
+ }
if (count == -1) count = strlenW(src) + 1;
switch(type)
{
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
index 65172a7..24b541a 100644
--- a/dlls/kernel32/tests/locale.c
+++ b/dlls/kernel32/tests/locale.c
@@ -3281,6 +3281,7 @@ static void test_GetStringTypeW(void)
WORD types[20];
WCHAR ch;
+ BOOL res;
int i;
memset(types,0,sizeof(types));
@@ -3338,6 +3339,15 @@ static void test_GetStringTypeW(void)
for (i = 0; i < 3; i++)
ok(types[i] & C1_SPACE || broken(types[i] == C1_CNTRL) || broken(types[i] == 0), "incorrect types returned for %x -> (%x does not have %x)\n",space_special[i], types[i], C1_SPACE );
+ for (i = -1; i < 3; i++)
+ {
+ SetLastError(0xdeadbeef);
+ memset(types, 0, sizeof(types));
+ res = GetStringTypeW(CT_CTYPE1, NULL, i, types);
+ ok(!res, "GetStringTypeW unexpectedly succeeded\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "wrong error, got %u\n", GetLastError());
+ }
+
/* surrogate pairs */
ch = 0xd800;
memset(types, 0, sizeof(types));
--
2.1.3

View File

@ -1,2 +0,0 @@
Fixes: [37759] Fix access violation when calling GetStringTypeW with NULL src.
Category: stable

View File

@ -1,4 +1,4 @@
From e2337e9756c38d06661d6dabd4a04d97528c4ab1 Mon Sep 17 00:00:00 2001
From 48231cd898005f4c3bbb3992776d480e7eee837b Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Thu, 7 Aug 2014 18:31:33 -0600
Subject: server: Keep a pointer to parent's fd unix_name in the closed_fd
@ -9,7 +9,7 @@ Subject: server: Keep a pointer to parent's fd unix_name in the closed_fd
1 file changed, 21 insertions(+), 17 deletions(-)
diff --git a/server/fd.c b/server/fd.c
index 9a4aac4..cd62cc8 100644
index a432ec7..397e51d 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -164,7 +164,8 @@ struct closed_fd
@ -154,15 +154,15 @@ index 9a4aac4..cd62cc8 100644
if (flags & O_TRUNC)
{
if (S_ISDIR(st.st_mode))
@@ -1896,7 +1900,7 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
set_error( STATUS_NOT_A_DIRECTORY );
goto error;
}
@@ -1891,7 +1895,7 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
}
else /* special file */
{
- if (unlink_name[0]) /* we can't unlink special files */
+ if (options & FILE_DELETE_ON_CLOSE) /* we can't unlink special files */
{
set_error( STATUS_INVALID_PARAMETER );
goto error;
--
2.3.3
2.4.0

View File

@ -1,127 +0,0 @@
From 53fb7cd87e18767ddda8e4b901ec4f3a4570ae98 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 15 May 2015 19:57:42 +0200
Subject: ntdll/tests: Add tests for accessing \\Device\\Null.
---
dlls/ntdll/tests/om.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 99 insertions(+)
diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c
index 96e1e6e..71b7ca8 100644
--- a/dlls/ntdll/tests/om.c
+++ b/dlls/ntdll/tests/om.c
@@ -1032,6 +1032,104 @@ static void test_keyed_events(void)
NtClose( event );
}
+static void test_null_device(void)
+{
+ OBJECT_ATTRIBUTES attr;
+ IO_STATUS_BLOCK iosb;
+ UNICODE_STRING str;
+ NTSTATUS status;
+ DWORD num_bytes;
+ OVERLAPPED ov;
+ char buf[64];
+ HANDLE null;
+ BOOL ret;
+
+ memset(buf, 0xAA, sizeof(buf));
+ memset(&ov, 0, sizeof(ov));
+ ov.hEvent = CreateEventA(NULL, TRUE, FALSE, NULL);
+
+ pRtlCreateUnicodeStringFromAsciiz(&str, "\\Device\\Null");
+ InitializeObjectAttributes(&attr, &str, OBJ_CASE_INSENSITIVE, 0, NULL);
+ status = pNtOpenSymbolicLinkObject(&null, SYMBOLIC_LINK_QUERY, &attr);
+ todo_wine
+ ok(status == STATUS_OBJECT_TYPE_MISMATCH,
+ "expected STATUS_OBJECT_TYPE_MISMATCH, got %08x\n", status);
+
+ status = pNtOpenFile(&null, GENERIC_READ | GENERIC_WRITE, &attr, &iosb,
+ FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_OPEN);
+ todo_wine
+ ok(status == STATUS_SUCCESS,
+ "expected STATUS_SUCCESS, got %08x\n", status);
+
+ SetLastError(0xdeadbeef);
+ ret = WriteFile(null, buf, sizeof(buf), &num_bytes, NULL);
+ ok(!ret, "WriteFile unexpectedly succeeded\n");
+ todo_wine
+ ok(GetLastError() == ERROR_INVALID_PARAMETER,
+ "expected ERROR_INVALID_PARAMETER, got %u\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
+ ret = ReadFile(null, buf, sizeof(buf), &num_bytes, NULL);
+ ok(!ret, "ReadFile unexpectedly succeeded\n");
+ todo_wine
+ ok(GetLastError() == ERROR_INVALID_PARAMETER,
+ "expected ERROR_INVALID_PARAMETER, got %u\n", GetLastError());
+
+ num_bytes = 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ ret = WriteFile(null, buf, sizeof(buf), &num_bytes, &ov);
+ if (ret || GetLastError() != ERROR_IO_PENDING)
+ {
+ todo_wine
+ ok(ret, "WriteFile failed with error %u\n", GetLastError());
+ }
+ else
+ {
+ num_bytes = 0xdeadbeef;
+ ret = GetOverlappedResult(null, &ov, &num_bytes, TRUE);
+ ok(ret, "GetOverlappedResult failed with error %u\n", GetLastError());
+ }
+ todo_wine
+ ok(num_bytes == sizeof(buf), "expected num_bytes = %u, got %u\n",
+ (DWORD)sizeof(buf), num_bytes);
+
+ num_bytes = 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ ret = ReadFile(null, buf, sizeof(buf), &num_bytes, &ov);
+ if (ret || GetLastError() != ERROR_IO_PENDING)
+ {
+ ok(!ret, "ReadFile unexpectedly succeeded\n");
+ }
+ else
+ {
+ num_bytes = 0xdeadbeef;
+ ret = GetOverlappedResult(null, &ov, &num_bytes, TRUE);
+ ok(!ret, "GetOverlappedResult unexpectedly succeeded\n");
+ }
+ todo_wine
+ ok(GetLastError() == ERROR_HANDLE_EOF,
+ "expected ERROR_HANDLE_EOF, got %u\n", GetLastError());
+
+ pNtClose(null);
+
+ null = CreateFileA("\\\\.\\Null", GENERIC_READ | GENERIC_WRITE,
+ FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+ OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ ok(null == INVALID_HANDLE_VALUE, "CreateFileA unexpectedly succeeded\n");
+ ok(GetLastError() == ERROR_FILE_NOT_FOUND,
+ "expected ERROR_FILE_NOT_FOUND, got %u\n", GetLastError());
+
+ null = CreateFileA("\\\\.\\Device\\Null", GENERIC_READ | GENERIC_WRITE,
+ FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
+ OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ ok(null == INVALID_HANDLE_VALUE, "CreateFileA unexpectedly succeeded\n");
+ ok(GetLastError() == ERROR_PATH_NOT_FOUND,
+ "expected ERROR_PATH_NOT_FOUND, got %u\n", GetLastError());
+
+ pRtlFreeUnicodeString(&str);
+ CloseHandle(ov.hEvent);
+}
+
START_TEST(om)
{
HMODULE hntdll = GetModuleHandleA("ntdll.dll");
@@ -1081,4 +1179,5 @@ START_TEST(om)
test_type_mismatch();
test_event();
test_keyed_events();
+ test_null_device();
}
--
2.4.0

View File

@ -1,21 +1,21 @@
From e2577e4c0c0637e22da03eeee33331495eb6d177 Mon Sep 17 00:00:00 2001
From f5ebb97d978d8418e1034ea58af16e6a0aa0216d Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 15 May 2015 22:23:52 +0200
Subject: null.sys: Implement device ioctl/read/write functions.
Based on a patch by Qian Hong.
---
dlls/ntdll/tests/om.c | 7 ++----
dlls/ntdll/tests/om.c | 12 +++------
dlls/null.sys/Makefile.in | 1 +
dlls/null.sys/main.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++
loader/wine.inf.in | 11 +++++++++
4 files changed, 77 insertions(+), 5 deletions(-)
4 files changed, 79 insertions(+), 8 deletions(-)
diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c
index 71b7ca8..f92069c 100644
index 71380a7..ca32577 100644
--- a/dlls/ntdll/tests/om.c
+++ b/dlls/ntdll/tests/om.c
@@ -1051,18 +1051,17 @@ static void test_null_device(void)
@@ -1053,30 +1053,27 @@ static void test_null_device(void)
pRtlCreateUnicodeStringFromAsciiz(&str, "\\Device\\Null");
InitializeObjectAttributes(&attr, &str, OBJ_CASE_INSENSITIVE, 0, NULL);
status = pNtOpenSymbolicLinkObject(&null, SYMBOLIC_LINK_QUERY, &attr);
@ -24,49 +24,40 @@ index 71b7ca8..f92069c 100644
"expected STATUS_OBJECT_TYPE_MISMATCH, got %08x\n", status);
status = pNtOpenFile(&null, GENERIC_READ | GENERIC_WRITE, &attr, &iosb,
FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_OPEN);
FILE_SHARE_READ | FILE_SHARE_WRITE, 0);
- todo_wine
ok(status == STATUS_SUCCESS,
"expected STATUS_SUCCESS, got %08x\n", status);
- if (status != STATUS_SUCCESS)
- {
- skip("opening \\Device\\Null failed, skipping read/write tests\n");
- goto out;
- }
SetLastError(0xdeadbeef);
ret = WriteFile(null, buf, sizeof(buf), &num_bytes, NULL);
+ todo_wine
ok(!ret, "WriteFile unexpectedly succeeded\n");
todo_wine
+ todo_wine
ok(GetLastError() == ERROR_INVALID_PARAMETER,
@@ -1070,6 +1069,7 @@ static void test_null_device(void)
"expected ERROR_INVALID_PARAMETER, got %u\n", GetLastError());
SetLastError(0xdeadbeef);
ret = ReadFile(null, buf, sizeof(buf), &num_bytes, NULL);
+ todo_wine
ok(!ret, "ReadFile unexpectedly succeeded\n");
todo_wine
+ todo_wine
ok(GetLastError() == ERROR_INVALID_PARAMETER,
@@ -1080,7 +1080,6 @@ static void test_null_device(void)
ret = WriteFile(null, buf, sizeof(buf), &num_bytes, &ov);
if (ret || GetLastError() != ERROR_IO_PENDING)
{
- todo_wine
ok(ret, "WriteFile failed with error %u\n", GetLastError());
}
else
@@ -1089,7 +1088,6 @@ static void test_null_device(void)
ret = GetOverlappedResult(null, &ov, &num_bytes, TRUE);
ok(ret, "GetOverlappedResult failed with error %u\n", GetLastError());
}
- todo_wine
ok(num_bytes == sizeof(buf), "expected num_bytes = %u, got %u\n",
(DWORD)sizeof(buf), num_bytes);
"expected ERROR_INVALID_PARAMETER, got %u\n", GetLastError());
@@ -1106,7 +1104,6 @@ static void test_null_device(void)
ret = GetOverlappedResult(null, &ov, &num_bytes, TRUE);
ok(!ret, "GetOverlappedResult unexpectedly succeeded\n");
}
- todo_wine
ok(GetLastError() == ERROR_HANDLE_EOF,
"expected ERROR_HANDLE_EOF, got %u\n", GetLastError());
@@ -1114,7 +1111,6 @@ static void test_null_device(void)
pNtClose(null);
-out:
null = CreateFileA("\\\\.\\Null", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
diff --git a/dlls/null.sys/Makefile.in b/dlls/null.sys/Makefile.in
index 4ea3b55..95c249d 100644
--- a/dlls/null.sys/Makefile.in

View File

@ -55,7 +55,7 @@ version()
echo "Copyright (C) 2014-2015 the Wine Staging project authors."
echo ""
echo "Patchset to be applied on upstream Wine:"
echo " commit 566077a2cdb7ea6ee17eedc1b1f8395c02643633"
echo " commit 0d91274defcf65093957cf8e43985b9be55642d5"
echo ""
}
@ -114,7 +114,6 @@ patch_enable_all ()
enable_ddraw_EnumSurfaces="$1"
enable_ddraw_Hotpatch="$1"
enable_ddraw_d3d_execute_buffer="$1"
enable_dinput_DeviceState="$1"
enable_dinput_Events="$1"
enable_dsound_EAX="$1"
enable_dsound_Fast_Mixer="$1"
@ -137,7 +136,6 @@ patch_enable_all ()
enable_kernel32_GetFinalPathNameByHandle="$1"
enable_kernel32_GetLogicalProcessorInformationEx="$1"
enable_kernel32_GetNumaProcessorNode="$1"
enable_kernel32_GetStringTypeW="$1"
enable_kernel32_GetSystemTimePreciseAsFileTime="$1"
enable_kernel32_GetSystemTimes="$1"
enable_kernel32_GetVolumePathName="$1"
@ -219,7 +217,6 @@ patch_enable_all ()
enable_server_Shared_Memory="$1"
enable_server_Stored_ACLs="$1"
enable_server_Unexpected_Wakeup="$1"
enable_server_attach_thread_input="$1"
enable_setupapi_SetupDiSelectBestCompatDrv="$1"
enable_setupapi_SetupDiSetDeviceInstallParamsW="$1"
enable_setupapi_SetupPromptForDisk="$1"
@ -412,9 +409,6 @@ patch_enable ()
ddraw-d3d_execute_buffer)
enable_ddraw_d3d_execute_buffer="$2"
;;
dinput-DeviceState)
enable_dinput_DeviceState="$2"
;;
dinput-Events)
enable_dinput_Events="$2"
;;
@ -481,9 +475,6 @@ patch_enable ()
kernel32-GetNumaProcessorNode)
enable_kernel32_GetNumaProcessorNode="$2"
;;
kernel32-GetStringTypeW)
enable_kernel32_GetStringTypeW="$2"
;;
kernel32-GetSystemTimePreciseAsFileTime)
enable_kernel32_GetSystemTimePreciseAsFileTime="$2"
;;
@ -727,9 +718,6 @@ patch_enable ()
server-Unexpected_Wakeup)
enable_server_Unexpected_Wakeup="$2"
;;
server-attach_thread_input)
enable_server_attach_thread_input="$2"
;;
setupapi-SetupDiSelectBestCompatDrv)
enable_setupapi_SetupDiSelectBestCompatDrv="$2"
;;
@ -1356,9 +1344,6 @@ if test "$enable_category_stable" -eq 1; then
if test "$enable_ddraw_Hotpatch" -gt 1; then
abort "Patchset ddraw-Hotpatch disabled, but category-stable depends on that."
fi
if test "$enable_dinput_DeviceState" -gt 1; then
abort "Patchset dinput-DeviceState disabled, but category-stable depends on that."
fi
if test "$enable_dinput_Events" -gt 1; then
abort "Patchset dinput-Events disabled, but category-stable depends on that."
fi
@ -1383,9 +1368,6 @@ if test "$enable_category_stable" -eq 1; then
if test "$enable_kernel32_GetDriveTypeW" -gt 1; then
abort "Patchset kernel32-GetDriveTypeW disabled, but category-stable depends on that."
fi
if test "$enable_kernel32_GetStringTypeW" -gt 1; then
abort "Patchset kernel32-GetStringTypeW disabled, but category-stable depends on that."
fi
if test "$enable_kernel32_GetSystemTimePreciseAsFileTime" -gt 1; then
abort "Patchset kernel32-GetSystemTimePreciseAsFileTime disabled, but category-stable depends on that."
fi
@ -1482,9 +1464,6 @@ if test "$enable_category_stable" -eq 1; then
if test "$enable_server_Unexpected_Wakeup" -gt 1; then
abort "Patchset server-Unexpected_Wakeup disabled, but category-stable depends on that."
fi
if test "$enable_server_attach_thread_input" -gt 1; then
abort "Patchset server-attach_thread_input disabled, but category-stable depends on that."
fi
if test "$enable_setupapi_SetupDiSetDeviceInstallParamsW" -gt 1; then
abort "Patchset setupapi-SetupDiSetDeviceInstallParamsW disabled, but category-stable depends on that."
fi
@ -1607,7 +1586,6 @@ if test "$enable_category_stable" -eq 1; then
enable_dbghelp_Debug_Symbols=1
enable_ddraw_EnumSurfaces=1
enable_ddraw_Hotpatch=1
enable_dinput_DeviceState=1
enable_dinput_Events=1
enable_dxgi_GetDesc=1
enable_fltlib_FilterLoad=1
@ -1616,7 +1594,6 @@ if test "$enable_category_stable" -eq 1; then
enable_gdiplus_GdipCreateEffect=1
enable_kernel32_CompareStringEx=1
enable_kernel32_GetDriveTypeW=1
enable_kernel32_GetStringTypeW=1
enable_kernel32_GetSystemTimePreciseAsFileTime=1
enable_kernel32_Named_Pipe=1
enable_libs_Debug_Channel=1
@ -1649,7 +1626,6 @@ if test "$enable_category_stable" -eq 1; then
enable_server_CreateProcess_ACLs=1
enable_server_Delete_On_Close=1
enable_server_Unexpected_Wakeup=1
enable_server_attach_thread_input=1
enable_setupapi_SetupDiSetDeviceInstallParamsW=1
enable_shell32_RunDLL_CallEntry16=1
enable_shell32_SHFileOperation=1
@ -2089,23 +2065,6 @@ if test "$enable_advapi32_ImpersonateAnonymousToken" -eq 1; then
) >> "$patchlist"
fi
# Patchset server-Misc_ACL
# |
# | This patchset fixes the following Wine bugs:
# | * [#15980] GetSecurityInfo returns NULL DACL for process object
# |
# | Modified files:
# | * dlls/advapi32/tests/security.c, server/process.c, server/security.h, server/token.c
# |
if test "$enable_server_Misc_ACL" -eq 1; then
patch_apply server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch
patch_apply server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch
(
echo '+ { "Erich E. Hoover", "server: Add default security descriptor ownership for processes.", 1 },';
echo '+ { "Erich E. Hoover", "server: Add default security descriptor DACL for processes.", 1 },';
) >> "$patchlist"
fi
# Patchset server-CreateProcess_ACLs
# |
# | This patchset fixes the following Wine bugs:
@ -2125,6 +2084,23 @@ if test "$enable_server_CreateProcess_ACLs" -eq 1; then
) >> "$patchlist"
fi
# Patchset server-Misc_ACL
# |
# | This patchset fixes the following Wine bugs:
# | * [#15980] GetSecurityInfo returns NULL DACL for process object
# |
# | Modified files:
# | * dlls/advapi32/tests/security.c, server/process.c, server/security.h, server/token.c
# |
if test "$enable_server_Misc_ACL" -eq 1; then
patch_apply server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch
patch_apply server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch
(
echo '+ { "Erich E. Hoover", "server: Add default security descriptor ownership for processes.", 1 },';
echo '+ { "Erich E. Hoover", "server: Add default security descriptor DACL for processes.", 1 },';
) >> "$patchlist"
fi
# Patchset advapi32-LsaLookupSids
# |
# | Modified files:
@ -2644,21 +2620,6 @@ if test "$enable_ddraw_d3d_execute_buffer" -eq 1; then
) >> "$patchlist"
fi
# Patchset dinput-DeviceState
# |
# | This patchset fixes the following Wine bugs:
# | * [#11607] Reset device state in SysKeyboard*Impl_Acquire
# |
# | Modified files:
# | * dlls/dinput/keyboard.c, dlls/dinput/tests/keyboard.c
# |
if test "$enable_dinput_DeviceState" -eq 1; then
patch_apply dinput-DeviceState/0001-dinput-Reset-device-state-in-SysKeyboard-Impl_Acquir.patch
(
echo '+ { "Sebastian Lackner", "dinput: Reset device state in SysKeyboard*Impl_Acquire.", 1 },';
) >> "$patchlist"
fi
# Patchset dinput-Events
# |
# | This patchset fixes the following Wine bugs:
@ -2805,6 +2766,48 @@ if test "$enable_wined3d_CSMT_Helper" -eq 1; then
) >> "$patchlist"
fi
# Patchset wined3d-wined3d_swapchain_present
# |
# | Modified files:
# | * dlls/wined3d/swapchain.c
# |
if test "$enable_wined3d_wined3d_swapchain_present" -eq 1; then
patch_apply wined3d-wined3d_swapchain_present/0001-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch
(
echo '+ { "Sebastian Lackner", "wined3d: Silence repeated wined3d_swapchain_present FIXME.", 1 },';
) >> "$patchlist"
fi
# Patchset wined3d-Dirtify_Vertex_Shader
# |
# | This patchset fixes the following Wine bugs:
# | * [#38539] Dirtify vertex shader on transformed update to fix graphical corruption
# |
# | Modified files:
# | * dlls/wined3d/glsl_shader.c
# |
if test "$enable_wined3d_Dirtify_Vertex_Shader" -eq 1; then
patch_apply wined3d-Dirtify_Vertex_Shader/0001-wined3d-Dirtify-vertex-shader-on-transformed-untrans.patch
(
echo '+ { "Matteo Bruni", "wined3d: Dirtify vertex shader on transformed <-> untransformed transition.", 1 },';
) >> "$patchlist"
fi
# Patchset wined3d-Multisampling
# |
# | This patchset fixes the following Wine bugs:
# | * [#12652] Allow to override number of quality levels for D3DMULTISAMPLE_NONMASKABLE.
# |
# | Modified files:
# | * dlls/wined3d/directx.c, dlls/wined3d/wined3d_main.c, dlls/wined3d/wined3d_private.h
# |
if test "$enable_wined3d_Multisampling" -eq 1; then
patch_apply wined3d-Multisampling/0001-wined3d-Allow-to-specify-multisampling-AA-quality-le.patch
(
echo '+ { "Austin English", "wined3d: Allow to specify multisampling AA quality levels via registry.", 1 },';
) >> "$patchlist"
fi
# Patchset wined3d-Revert_PixelFormat
# |
# | This patchset fixes the following Wine bugs:
@ -2839,18 +2842,6 @@ if test "$enable_wined3d_Revert_PixelFormat" -eq 1; then
) >> "$patchlist"
fi
# Patchset wined3d-wined3d_swapchain_present
# |
# | Modified files:
# | * dlls/wined3d/swapchain.c
# |
if test "$enable_wined3d_wined3d_swapchain_present" -eq 1; then
patch_apply wined3d-wined3d_swapchain_present/0001-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch
(
echo '+ { "Sebastian Lackner", "wined3d: Silence repeated wined3d_swapchain_present FIXME.", 1 },';
) >> "$patchlist"
fi
# Patchset wined3d-UnhandledBlendFactor
# |
# | Modified files:
@ -2875,36 +2866,6 @@ if test "$enable_wined3d_resource_check_usage" -eq 1; then
) >> "$patchlist"
fi
# Patchset wined3d-Dirtify_Vertex_Shader
# |
# | This patchset fixes the following Wine bugs:
# | * [#38539] Dirtify vertex shader on transformed update to fix graphical corruption
# |
# | Modified files:
# | * dlls/wined3d/glsl_shader.c
# |
if test "$enable_wined3d_Dirtify_Vertex_Shader" -eq 1; then
patch_apply wined3d-Dirtify_Vertex_Shader/0001-wined3d-Dirtify-vertex-shader-on-transformed-untrans.patch
(
echo '+ { "Matteo Bruni", "wined3d: Dirtify vertex shader on transformed <-> untransformed transition.", 1 },';
) >> "$patchlist"
fi
# Patchset wined3d-Multisampling
# |
# | This patchset fixes the following Wine bugs:
# | * [#12652] Allow to override number of quality levels for D3DMULTISAMPLE_NONMASKABLE.
# |
# | Modified files:
# | * dlls/wined3d/directx.c, dlls/wined3d/wined3d_main.c, dlls/wined3d/wined3d_private.h
# |
if test "$enable_wined3d_Multisampling" -eq 1; then
patch_apply wined3d-Multisampling/0001-wined3d-Allow-to-specify-multisampling-AA-quality-le.patch
(
echo '+ { "Austin English", "wined3d: Allow to specify multisampling AA quality levels via registry.", 1 },';
) >> "$patchlist"
fi
# Patchset wined3d-CSMT_Main
# |
# | This patchset fixes the following Wine bugs:
@ -3655,21 +3616,6 @@ if test "$enable_kernel32_GetNumaProcessorNode" -eq 1; then
) >> "$patchlist"
fi
# Patchset kernel32-GetStringTypeW
# |
# | This patchset fixes the following Wine bugs:
# | * [#37759] Fix access violation when calling GetStringTypeW with NULL src.
# |
# | Modified files:
# | * dlls/kernel32/locale.c, dlls/kernel32/tests/locale.c
# |
if test "$enable_kernel32_GetStringTypeW" -eq 1; then
patch_apply kernel32-GetStringTypeW/0001-kernel32-Allow-empty-source-in-GetStringTypeW.patch
(
echo '+ { "Christian Faure", "kernel32: Allow empty source in GetStringTypeW.", 1 },';
) >> "$patchlist"
fi
# Patchset kernel32-GetSystemTimePreciseAsFileTime
# |
# | This patchset fixes the following Wine bugs:
@ -4492,11 +4438,9 @@ fi
# | loader/wine.inf.in
# |
if test "$enable_null_Null_Device" -eq 1; then
patch_apply null-Null_Device/0001-ntdll-tests-Add-tests-for-accessing-Device-Null.patch
patch_apply null-Null_Device/0002-null.sys-Added-stub-dll.patch
patch_apply null-Null_Device/0003-null.sys-Implement-device-ioctl-read-write-functions.patch
patch_apply null-Null_Device/0001-null.sys-Added-stub-dll.patch
patch_apply null-Null_Device/0002-null.sys-Implement-device-ioctl-read-write-functions.patch
(
echo '+ { "Sebastian Lackner", "ntdll/tests: Add tests for accessing \\\\\\\\Device\\\\\\\\Null.", 1 },';
echo '+ { "Qian Hong", "null.sys: Added stub dll.", 1 },';
echo '+ { "Sebastian Lackner", "null.sys: Implement device ioctl/read/write functions.", 1 },';
) >> "$patchlist"
@ -4675,7 +4619,6 @@ fi
# Patchset riched20-IText_Interface
# |
# | This patchset fixes the following Wine bugs:
# | * [#12458] Support for ITextDocument_fnRange function
# | * [#18303] Support for ITextRange, ITextFont and ITextPara
# |
# | Modified files:
@ -4990,21 +4933,6 @@ if test "$enable_server_Unexpected_Wakeup" -eq 1; then
) >> "$patchlist"
fi
# Patchset server-attach_thread_input
# |
# | This patchset fixes the following Wine bugs:
# | * [#38562] Do not create foreign thread queues for attach_thread_input requests
# |
# | Modified files:
# | * dlls/user32/tests/input.c, server/queue.c
# |
if test "$enable_server_attach_thread_input" -eq 1; then
patch_apply server-attach_thread_input/0001-server-Do-not-create-foreign-thread-queues-for-attac.patch
(
echo '+ { "Sebastian Lackner", "server: Do not create foreign thread queues for attach_thread_input requests.", 1 },';
) >> "$patchlist"
fi
# Patchset setupapi-SetupDiSelectBestCompatDrv
# |
# | This patchset fixes the following Wine bugs:
@ -5813,21 +5741,19 @@ fi
# | * dlls/rpcrt4/rpc_transport.c, dlls/wininet/http.c, dlls/wininet/tests/http.c
# |
if test "$enable_wininet_Cleanup" -eq 1; then
patch_apply wininet-Cleanup/0001-wininet-Fix-memory-leak-by-not-calling-get_cookie_he.patch
patch_apply wininet-Cleanup/0002-wininet-tests-Add-more-tests-for-cookies.patch
patch_apply wininet-Cleanup/0003-wininet-tests-Add-tests-for-overriding-host-header.patch
patch_apply wininet-Cleanup/0004-wininet-tests-Test-auth-credential-reusage-with-host.patch
patch_apply wininet-Cleanup/0005-wininet-tests-Check-cookie-behaviour-when-overriding.patch
patch_apply wininet-Cleanup/0006-wininet-Use-request-server-name-when-processing-cook.patch
patch_apply wininet-Cleanup/0007-wininet-Delay-setting-the-http-host-header.patch
patch_apply wininet-Cleanup/0008-wininet-Use-request-server-canon_host_port-in-authen.patch
patch_apply wininet-Cleanup/0009-wininet-Use-request-server-canon_host_port-when-quer.patch
patch_apply wininet-Cleanup/0010-rpcrt4-Fix-arguments-of-HttpAddRequestHeaders.patch
patch_apply wininet-Cleanup/0011-wininet-Fix-arguments-of-HttpAddRequestHeaders.patch
patch_apply wininet-Cleanup/0012-wininet-Strip-filename-if-no-path-is-set-in-cookie.patch
patch_apply wininet-Cleanup/0013-wininet-Replacing-header-fields-should-fail-if-they-.patch
patch_apply wininet-Cleanup/0001-wininet-tests-Add-more-tests-for-cookies.patch
patch_apply wininet-Cleanup/0002-wininet-tests-Add-tests-for-overriding-host-header.patch
patch_apply wininet-Cleanup/0003-wininet-tests-Test-auth-credential-reusage-with-host.patch
patch_apply wininet-Cleanup/0004-wininet-tests-Check-cookie-behaviour-when-overriding.patch
patch_apply wininet-Cleanup/0005-wininet-Use-request-server-name-when-processing-cook.patch
patch_apply wininet-Cleanup/0006-wininet-Delay-setting-the-http-host-header.patch
patch_apply wininet-Cleanup/0007-wininet-Use-request-server-canon_host_port-in-authen.patch
patch_apply wininet-Cleanup/0008-wininet-Use-request-server-canon_host_port-when-quer.patch
patch_apply wininet-Cleanup/0009-rpcrt4-Fix-arguments-of-HttpAddRequestHeaders.patch
patch_apply wininet-Cleanup/0010-wininet-Fix-arguments-of-HttpAddRequestHeaders.patch
patch_apply wininet-Cleanup/0011-wininet-Strip-filename-if-no-path-is-set-in-cookie.patch
patch_apply wininet-Cleanup/0012-wininet-Replacing-header-fields-should-fail-if-they-.patch
(
echo '+ { "Michael Müller", "wininet: Fix memory leak by not calling get_cookie_header twice.", 1 },';
echo '+ { "Michael Müller", "wininet/tests: Add more tests for cookies.", 1 },';
echo '+ { "Michael Müller", "wininet/tests: Add tests for overriding host header.", 1 },';
echo '+ { "Michael Müller", "wininet/tests: Test auth credential reusage with host override.", 1 },';

View File

@ -1,18 +1,18 @@
From 6f4e0b9da2720ac9b3e37b419e5599cb0f0fb99d Mon Sep 17 00:00:00 2001
From c75a9af77ea3cc0abea38a7c595b52093b4d166a Mon Sep 17 00:00:00 2001
From: Jactry Zeng <wine@jactry.com>
Date: Fri, 8 Aug 2014 21:32:57 +0800
Subject: riched20: Implement IText{Selection, Range}::Set{Start, End}.
---
dlls/riched20/richole.c | 52 +++++++++++++---
dlls/riched20/richole.c | 46 ++++++++++++--
dlls/riched20/tests/richole.c | 135 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 179 insertions(+), 8 deletions(-)
2 files changed, 177 insertions(+), 4 deletions(-)
diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c
index 3818cfa..89a51ac 100644
index 4f85325..55dda9b 100644
--- a/dlls/riched20/richole.c
+++ b/dlls/riched20/richole.c
@@ -871,14 +871,27 @@ static HRESULT WINAPI ITextRange_fnGetStart(ITextRange *me, LONG *pcpFirst)
@@ -2995,14 +2995,33 @@ static HRESULT WINAPI ITextSelection_fnGetStart(ITextSelection *me, LONG *pcpFir
return S_OK;
}
@ -30,49 +30,6 @@ index 3818cfa..89a51ac 100644
+ return S_OK;
+}
+
static HRESULT WINAPI ITextRange_fnSetStart(ITextRange *me, LONG cpFirst)
{
ITextRangeImpl *This = impl_from_ITextRange(me);
if (!This->reOle)
return CO_E_RELEASED;
- FIXME("not implemented %p\n", This);
- return E_NOTIMPL;
+ return range_SetStart(This->reOle->editor, cpFirst, &This->start, &This->end);
}
static HRESULT WINAPI ITextRange_fnGetEnd(ITextRange *me, LONG *pcpLim)
@@ -894,14 +907,27 @@ static HRESULT WINAPI ITextRange_fnGetEnd(ITextRange *me, LONG *pcpLim)
return S_OK;
}
+static HRESULT range_SetEnd(ME_TextEditor *editor, LONG cpLim, LONG *start, LONG *end)
+{
+ int len = ME_GetTextLength(editor) + 1;
+
+ TRACE("%d\n", cpLim);
+ if (cpLim == *end)
+ return S_FALSE;
+ cpLim = min(cpLim, len);
+ cpLim = max(cpLim, 0);
+ *start = min(*start, cpLim);
+ *end = cpLim;
+ return S_OK;
+}
+
static HRESULT WINAPI ITextRange_fnSetEnd(ITextRange *me, LONG cpLim)
{
ITextRangeImpl *This = impl_from_ITextRange(me);
if (!This->reOle)
return CO_E_RELEASED;
- FIXME("not implemented %p\n", This);
- return E_NOTIMPL;
+ return range_SetEnd(This->reOle->editor, cpLim, &This->start, &This->end);
}
static HRESULT WINAPI ITextRange_fnGetFont(ITextRange *me, ITextFont **pFont)
@@ -1881,11 +1907,16 @@ static HRESULT WINAPI ITextSelection_fnGetStart(ITextSelection *me, LONG *pcpFir
static HRESULT WINAPI ITextSelection_fnSetStart(ITextSelection *me, LONG cpFirst)
{
ITextSelectionImpl *This = impl_from_ITextSelection(me);
@ -91,7 +48,24 @@ index 3818cfa..89a51ac 100644
}
static HRESULT WINAPI ITextSelection_fnGetEnd(ITextSelection *me, LONG *pcpLim)
@@ -1905,11 +1936,16 @@ static HRESULT WINAPI ITextSelection_fnGetEnd(ITextSelection *me, LONG *pcpLim)
@@ -3019,14 +3038,33 @@ static HRESULT WINAPI ITextSelection_fnGetEnd(ITextSelection *me, LONG *pcpLim)
return S_OK;
}
+static HRESULT range_SetEnd(ME_TextEditor *editor, LONG cpLim, LONG *start, LONG *end)
+{
+ int len = ME_GetTextLength(editor) + 1;
+
+ TRACE("%d\n", cpLim);
+ if (cpLim == *end)
+ return S_FALSE;
+ cpLim = min(cpLim, len);
+ cpLim = max(cpLim, 0);
+ *start = min(*start, cpLim);
+ *end = cpLim;
+ return S_OK;
+}
+
static HRESULT WINAPI ITextSelection_fnSetEnd(ITextSelection *me, LONG cpLim)
{
ITextSelectionImpl *This = impl_from_ITextSelection(me);
@ -111,11 +85,11 @@ index 3818cfa..89a51ac 100644
static HRESULT WINAPI ITextSelection_fnGetFont(ITextSelection *me, ITextFont **pFont)
diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c
index b4fbaa1..5550e30 100644
index d826298..9a52f78 100644
--- a/dlls/riched20/tests/richole.c
+++ b/dlls/riched20/tests/richole.c
@@ -1081,6 +1081,137 @@ static void test_IOleInPlaceSite_GetWindow(void)
release_interfaces(&w, &reOle, &txtDoc, NULL);
@@ -1347,6 +1347,137 @@ todo_wine {
release_interfaces(&hwnd, &reOle, &doc, NULL);
}
+static void test_ITextRange_SetStart(void)
@ -252,7 +226,7 @@ index b4fbaa1..5550e30 100644
START_TEST(richole)
{
/* Must explicitly LoadLibrary(). The test has no references to functions in
@@ -1093,12 +1224,16 @@ START_TEST(richole)
@@ -1359,12 +1490,16 @@ START_TEST(richole)
test_ITextSelection_GetText();
test_ITextSelection_GetChar();
test_ITextSelection_GetStart_GetEnd();
@ -270,5 +244,5 @@ index b4fbaa1..5550e30 100644
test_IOleWindow_GetWindow();
test_IOleInPlaceSite_GetWindow();
--
2.3.2
2.4.0

View File

@ -1,4 +1,4 @@
From 359a12d6dac0d8ef3560055d39d6ff59ed80fe5e Mon Sep 17 00:00:00 2001
From 44c16f1f02bf269a595b914bcc55a37184fc1fa4 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 13 Sep 2014 17:21:31 +0200
Subject: riched20: Fix invalid memory access when parent object was destroyed
@ -9,10 +9,10 @@ Subject: riched20: Fix invalid memory access when parent object was destroyed
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c
index e42df2b..fe9af6a 100644
index d3ed501..7a07a84 100644
--- a/dlls/riched20/richole.c
+++ b/dlls/riched20/richole.c
@@ -546,10 +546,13 @@ static ULONG WINAPI ITextPara_fnRelease(ITextPara *me)
@@ -1618,10 +1618,13 @@ static ULONG WINAPI TextFont_Release(ITextFont *iface)
ITextRange_Release(&This->txtRge->ITextRange_iface);
else
ITextSelection_Release(&This->txtSel->ITextSelection_iface);
@ -27,8 +27,8 @@ index e42df2b..fe9af6a 100644
+ }
heap_free(This);
}
return ref;
@@ -1181,10 +1184,13 @@ static ULONG WINAPI ITextFont_fnRelease(ITextFont *me)
@@ -2441,10 +2444,13 @@ static ULONG WINAPI TextPara_Release(ITextPara *iface)
ITextRange_Release(&This->txtRge->ITextRange_iface);
else
ITextSelection_Release(&This->txtSel->ITextSelection_iface);
@ -43,7 +43,7 @@ index e42df2b..fe9af6a 100644
+ }
heap_free(This);
}
return ref;
--
2.1.2
2.4.0

View File

@ -1,18 +1,18 @@
From 6bb871e513368168c7fd275e0d4fc38ef82a51c1 Mon Sep 17 00:00:00 2001
From 0b40418cf55b2c6b963433c48fd52f8465558f1d Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 1 Nov 2014 22:51:34 +0100
Subject: riched20: Silence repeated FIXMEs triggered by Adobe Reader.
Adobe Reader calls these functions very often while scrolling through a document.
---
dlls/riched20/richole.c | 38 ++++++++++++++++++++++++++++----------
1 file changed, 28 insertions(+), 10 deletions(-)
dlls/riched20/richole.c | 48 ++++++++++++++++++++++++++++++++++++++----------
1 file changed, 38 insertions(+), 10 deletions(-)
diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c
index fe9af6a..9de460f 100644
index 7a07a84..8e719eb 100644
--- a/dlls/riched20/richole.c
+++ b/dlls/riched20/richole.c
@@ -146,6 +146,14 @@ static HRESULT WINAPI IRichEditOleImpl_inner_fnQueryInterface(IUnknown *iface, R
@@ -175,6 +175,14 @@ static HRESULT WINAPI IRichEditOleImpl_inner_fnQueryInterface(IUnknown *iface, R
IUnknown_AddRef((IUnknown *)*ppvObj);
return S_OK;
}
@ -27,160 +27,116 @@ index fe9af6a..9de460f 100644
FIXME("%p: unhandled interface %s\n", This, debugstr_guid(riid));
return E_NOINTERFACE;
@@ -676,11 +684,12 @@ static HRESULT WINAPI ITextPara_fnSetStyle(ITextPara *me, LONG Value)
static HRESULT WINAPI ITextPara_fnGetAlignment(ITextPara *me, LONG *pValue)
@@ -1833,7 +1841,9 @@ static HRESULT WINAPI TextFont_SetBackColor(ITextFont *iface, LONG value)
static HRESULT WINAPI TextFont_GetBold(ITextFont *iface, LONG *value)
{
ITextFontImpl *This = impl_from_ITextFont(iface);
- FIXME("(%p)->(%p): stub\n", This, value);
+ static int once;
ITextParaImpl *This = impl_from_ITextPara(me);
if (!This->reOle)
return CO_E_RELEASED;
+
+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value);
- FIXME("not implemented: %p\n", This);
+ if (!once++) FIXME("not implemented: %p\n", This);
return E_NOTIMPL;
}
@@ -1374,13 +1383,14 @@ static HRESULT WINAPI ITextFont_fnSetBackColor(ITextFont *me, LONG Value)
static HRESULT WINAPI ITextFont_fnGetBold(ITextFont *me, LONG *pValue)
{
+ static int once;
ITextFontImpl *This = impl_from_ITextFont(me);
if (!pValue)
if (!value)
return E_INVALIDARG;
if (!This->reOle)
return CO_E_RELEASED;
- FIXME("Stub\n");
+ if (!once++) FIXME("Stub\n");
*pValue = tomFalse;
return S_OK;
}
@@ -1417,13 +1427,14 @@ static HRESULT WINAPI ITextFont_fnSetEmboss(ITextFont *me, LONG Value)
static HRESULT WINAPI ITextFont_fnGetForeColor(ITextFont *me, LONG *pValue)
@@ -1880,7 +1890,9 @@ static HRESULT WINAPI TextFont_SetEmboss(ITextFont *iface, LONG value)
static HRESULT WINAPI TextFont_GetForeColor(ITextFont *iface, LONG *value)
{
ITextFontImpl *This = impl_from_ITextFont(iface);
- FIXME("(%p)->(%p): stub\n", This, value);
+ static int once;
ITextFontImpl *This = impl_from_ITextFont(me);
if (!pValue)
+
+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value);
if (!value)
return E_INVALIDARG;
if (!This->reOle)
return CO_E_RELEASED;
- FIXME("Stub\n");
+ if (!once++) FIXME("Stub\n");
*pValue = tomAutoColor;
return S_OK;
}
@@ -1480,13 +1491,14 @@ static HRESULT WINAPI ITextFont_fnSetEngrave(ITextFont *me, LONG Value)
static HRESULT WINAPI ITextFont_fnGetItalic(ITextFont *me, LONG *pValue)
@@ -1949,7 +1961,9 @@ static HRESULT WINAPI TextFont_SetEngrave(ITextFont *iface, LONG value)
static HRESULT WINAPI TextFont_GetItalic(ITextFont *iface, LONG *value)
{
ITextFontImpl *This = impl_from_ITextFont(iface);
- FIXME("(%p)->(%p): stub\n", This, value);
+ static int once;
ITextFontImpl *This = impl_from_ITextFont(me);
if (!pValue)
+
+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value);
if (!value)
return E_INVALIDARG;
@@ -1996,7 +2010,9 @@ static HRESULT WINAPI TextFont_SetKerning(ITextFont *iface, FLOAT value)
static HRESULT WINAPI TextFont_GetLanguageID(ITextFont *iface, LONG *value)
{
ITextFontImpl *This = impl_from_ITextFont(iface);
- FIXME("(%p)->(%p): stub\n", This, value);
+ static int once;
+
+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value);
if (!This->reOle)
return CO_E_RELEASED;
- FIXME("Stub\n");
+ if (!once++) FIXME("Stub\n");
*pValue = tomFalse;
return S_OK;
}
@@ -1523,11 +1535,12 @@ static HRESULT WINAPI ITextFont_fnSetKerning(ITextFont *me, float Value)
static HRESULT WINAPI ITextFont_fnGetLanguageID(ITextFont *me, LONG *pValue)
@@ -2133,7 +2149,9 @@ static HRESULT WINAPI TextFont_SetShadow(ITextFont *iface, LONG value)
static HRESULT WINAPI TextFont_GetSize(ITextFont *iface, FLOAT *value)
{
ITextFontImpl *This = impl_from_ITextFont(iface);
- FIXME("(%p)->(%p): stub\n", This, value);
+ static int once;
ITextFontImpl *This = impl_from_ITextFont(me);
if (!This->reOle)
return CO_E_RELEASED;
+
+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value);
- FIXME("not implemented: %p\n", This);
+ if (!once++) FIXME("not implemented: %p\n", This);
return E_NOTIMPL;
}
@@ -1647,13 +1660,14 @@ static HRESULT WINAPI ITextFont_fnSetShadow(ITextFont *me, LONG Value)
static HRESULT WINAPI ITextFont_fnGetSize(ITextFont *me, float *pValue)
{
+ static int once;
ITextFontImpl *This = impl_from_ITextFont(me);
if (!pValue)
if (!value)
return E_INVALIDARG;
if (!This->reOle)
return CO_E_RELEASED;
- FIXME("Stub\n");
+ if (!once++) FIXME("Stub\n");
*pValue = 12.0;
return S_OK;
}
@@ -1710,13 +1724,14 @@ static HRESULT WINAPI ITextFont_fnSetSpacing(ITextFont *me, float Value)
static HRESULT WINAPI ITextFont_fnGetStrikeThrough(ITextFont *me, LONG *pValue)
@@ -2202,7 +2220,9 @@ static HRESULT WINAPI TextFont_SetSpacing(ITextFont *iface, FLOAT value)
static HRESULT WINAPI TextFont_GetStrikeThrough(ITextFont *iface, LONG *value)
{
ITextFontImpl *This = impl_from_ITextFont(iface);
- FIXME("(%p)->(%p): stub\n", This, value);
+ static int once;
ITextFontImpl *This = impl_from_ITextFont(me);
if (!pValue)
+
+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value);
if (!value)
return E_INVALIDARG;
if (!This->reOle)
return CO_E_RELEASED;
- FIXME("Stub\n");
+ if (!once++) FIXME("Stub\n");
*pValue = tomFalse;
return S_OK;
}
@@ -1733,13 +1748,14 @@ static HRESULT WINAPI ITextFont_fnSetStrikeThrough(ITextFont *me, LONG Value)
static HRESULT WINAPI ITextFont_fnGetSubscript(ITextFont *me, LONG *pValue)
@@ -2227,7 +2247,9 @@ static HRESULT WINAPI TextFont_SetStrikeThrough(ITextFont *iface, LONG value)
static HRESULT WINAPI TextFont_GetSubscript(ITextFont *iface, LONG *value)
{
ITextFontImpl *This = impl_from_ITextFont(iface);
- FIXME("(%p)->(%p): stub\n", This, value);
+ static int once;
ITextFontImpl *This = impl_from_ITextFont(me);
if (!pValue)
+
+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value);
if (!value)
return E_INVALIDARG;
if (!This->reOle)
return CO_E_RELEASED;
- FIXME("Stub\n");
+ if (!once++) FIXME("Stub\n");
*pValue = tomFalse;
return S_OK;
}
@@ -1779,13 +1795,14 @@ static HRESULT WINAPI ITextFont_fnSetSuperscript(ITextFont *me, LONG Value)
static HRESULT WINAPI ITextFont_fnGetUnderline(ITextFont *me, LONG *pValue)
@@ -2277,7 +2299,9 @@ static HRESULT WINAPI TextFont_SetSuperscript(ITextFont *iface, LONG value)
static HRESULT WINAPI TextFont_GetUnderline(ITextFont *iface, LONG *value)
{
ITextFontImpl *This = impl_from_ITextFont(iface);
- FIXME("(%p)->(%p): stub\n", This, value);
+ static int once;
ITextFontImpl *This = impl_from_ITextFont(me);
if (!pValue)
+
+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value);
if (!value)
return E_INVALIDARG;
if (!This->reOle)
return CO_E_RELEASED;
- FIXME("Stub\n");
+ if (!once++) FIXME("Stub\n");
*pValue = tomNone;
return S_OK;
}
@@ -1802,11 +1819,12 @@ static HRESULT WINAPI ITextFont_fnSetUnderline(ITextFont *me, LONG Value)
static HRESULT WINAPI ITextFont_fnGetWeight(ITextFont *me, LONG *pValue)
@@ -2302,7 +2326,9 @@ static HRESULT WINAPI TextFont_SetUnderline(ITextFont *iface, LONG value)
static HRESULT WINAPI TextFont_GetWeight(ITextFont *iface, LONG *value)
{
ITextFontImpl *This = impl_from_ITextFont(iface);
- FIXME("(%p)->(%p): stub\n", This, value);
+ static int once;
ITextFontImpl *This = impl_from_ITextFont(me);
+
+ if (!once++) FIXME("(%p)->(%p): stub\n", This, value);
if (!This->reOle)
return CO_E_RELEASED;
@@ -2593,7 +2619,9 @@ static HRESULT WINAPI TextPara_SetStyle(ITextPara *iface, LONG value)
static HRESULT WINAPI TextPara_GetAlignment(ITextPara *iface, LONG *value)
{
ITextParaImpl *This = impl_from_ITextPara(iface);
- FIXME("(%p)->(%p)\n", This, value);
+ static int once;
+
+ if (!once++) FIXME("(%p)->(%p)\n", This, value);
- FIXME("not implemented: %p\n", This);
+ if (!once++) FIXME("not implemented: %p\n", This);
return E_NOTIMPL;
}
if (!This->reOle)
return CO_E_RELEASED;
--
2.1.2
2.4.0

View File

@ -1,3 +1,3 @@
Fixes: [12458] Support for ITextDocument_fnRange function
# Fixes: [12458] Support for ITextDocument_fnRange function
Fixes: [18303] Support for ITextRange, ITextFont and ITextPara
Fixes: Adobe Reader needs ITextSelection_fnGetDuplicate implementation

View File

@ -1,184 +0,0 @@
From 1ee8a05ba250bb7ca37b68f0d80085c231351ee1 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 12 May 2015 05:15:59 +0200
Subject: server: Do not create foreign thread queues for attach_thread_input
requests.
---
dlls/user32/tests/input.c | 109 ++++++++++++++++++++++++++++++++++++++++++++++
server/queue.c | 8 ++++
2 files changed, 117 insertions(+)
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
index 30b91a0..4a67c74 100644
--- a/dlls/user32/tests/input.c
+++ b/dlls/user32/tests/input.c
@@ -2040,7 +2040,10 @@ static LRESULT WINAPI MsgCheckProcA(HWND hwnd, UINT message, WPARAM wParam, LPAR
struct wnd_event
{
HWND hwnd;
+ HANDLE wait_event;
HANDLE start_event;
+ DWORD attach_from;
+ DWORD attach_to;
BOOL setWindows;
};
@@ -2048,6 +2051,26 @@ static DWORD WINAPI thread_proc(void *param)
{
MSG msg;
struct wnd_event *wnd_event = param;
+ BOOL ret;
+
+ if (wnd_event->wait_event)
+ {
+ ok(WaitForSingleObject(wnd_event->wait_event, INFINITE) == WAIT_OBJECT_0,
+ "WaitForSingleObject failed\n");
+ CloseHandle(wnd_event->wait_event);
+ }
+
+ if (wnd_event->attach_from)
+ {
+ ret = AttachThreadInput(wnd_event->attach_from, GetCurrentThreadId(), TRUE);
+ ok(ret, "AttachThreadInput error %d\n", GetLastError());
+ }
+
+ if (wnd_event->attach_to)
+ {
+ ret = AttachThreadInput(GetCurrentThreadId(), wnd_event->attach_to, TRUE);
+ ok(ret, "AttachThreadInput error %d\n", GetLastError());
+ }
wnd_event->hwnd = CreateWindowExA(0, "TestWindowClass", "window caption text", WS_OVERLAPPEDWINDOW,
100, 100, 200, 200, 0, 0, 0, NULL);
@@ -2090,7 +2113,10 @@ static void test_attach_input(void)
cls.lpszClassName = "TestWindowClass";
if(!RegisterClassA(&cls)) return;
+ wnd_event.wait_event = NULL;
wnd_event.start_event = CreateEventW(NULL, 0, 0, NULL);
+ wnd_event.attach_from = 0;
+ wnd_event.attach_to = 0;
wnd_event.setWindows = FALSE;
if (!wnd_event.start_event)
{
@@ -2157,7 +2183,10 @@ static void test_attach_input(void)
ok(WaitForSingleObject(hThread, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n");
CloseHandle(hThread);
+ wnd_event.wait_event = NULL;
wnd_event.start_event = CreateEventW(NULL, 0, 0, NULL);
+ wnd_event.attach_from = 0;
+ wnd_event.attach_to = 0;
wnd_event.setWindows = TRUE;
hThread = CreateThread(NULL, 0, thread_proc, &wnd_event, 0, &tid);
@@ -2213,6 +2242,86 @@ static void test_attach_input(void)
ok(WaitForSingleObject(hThread, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n");
CloseHandle(hThread);
+
+ wnd_event.wait_event = CreateEventW(NULL, 0, 0, NULL);
+ wnd_event.start_event = CreateEventW(NULL, 0, 0, NULL);
+ wnd_event.attach_from = 0;
+ wnd_event.attach_to = 0;
+ wnd_event.setWindows = TRUE;
+
+ hThread = CreateThread(NULL, 0, thread_proc, &wnd_event, 0, &tid);
+ ok(hThread != NULL, "CreateThread failed, error %d\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
+ ret = AttachThreadInput(GetCurrentThreadId(), tid, TRUE);
+ ok(!ret, "AttachThreadInput succeeded\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == 0xdeadbeef) /* <= Win XP */,
+ "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
+ ret = AttachThreadInput(tid, GetCurrentThreadId(), TRUE);
+ ok(!ret, "AttachThreadInput succeeded\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == 0xdeadbeef) /* <= Win XP */,
+ "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+
+ SetEvent(wnd_event.wait_event);
+
+ ok(WaitForSingleObject(wnd_event.start_event, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n");
+ CloseHandle(wnd_event.start_event);
+
+ ret = PostMessageA(wnd_event.hwnd, WM_QUIT, 0, 0);
+ ok(ret, "PostMessageA(WM_QUIT) error %d\n", GetLastError());
+
+ ok(WaitForSingleObject(hThread, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n");
+ CloseHandle(hThread);
+
+ wnd_event.wait_event = NULL;
+ wnd_event.start_event = CreateEventW(NULL, 0, 0, NULL);
+ wnd_event.attach_from = GetCurrentThreadId();
+ wnd_event.attach_to = 0;
+ wnd_event.setWindows = FALSE;
+
+ SetFocus(ourWnd);
+ SetActiveWindow(ourWnd);
+
+ hThread = CreateThread(NULL, 0, thread_proc, &wnd_event, 0, &tid);
+ ok(hThread != NULL, "CreateThread failed, error %d\n", GetLastError());
+
+ ok(WaitForSingleObject(wnd_event.start_event, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n");
+ CloseHandle(wnd_event.start_event);
+
+ ok(GetActiveWindow() == ourWnd, "expected active %p, got %p\n", ourWnd, GetActiveWindow());
+ ok(GetFocus() == ourWnd, "expected focus %p, got %p\n", ourWnd, GetFocus());
+
+ ret = PostMessageA(wnd_event.hwnd, WM_QUIT, 0, 0);
+ ok(ret, "PostMessageA(WM_QUIT) error %d\n", GetLastError());
+
+ ok(WaitForSingleObject(hThread, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n");
+ CloseHandle(hThread);
+
+ wnd_event.wait_event = NULL;
+ wnd_event.start_event = CreateEventW(NULL, 0, 0, NULL);
+ wnd_event.attach_from = 0;
+ wnd_event.attach_to = GetCurrentThreadId();
+ wnd_event.setWindows = FALSE;
+
+ SetFocus(ourWnd);
+ SetActiveWindow(ourWnd);
+
+ hThread = CreateThread(NULL, 0, thread_proc, &wnd_event, 0, &tid);
+ ok(hThread != NULL, "CreateThread failed, error %d\n", GetLastError());
+
+ ok(WaitForSingleObject(wnd_event.start_event, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n");
+ CloseHandle(wnd_event.start_event);
+
+ ok(GetActiveWindow() == ourWnd, "expected active %p, got %p\n", ourWnd, GetActiveWindow());
+ ok(GetFocus() == ourWnd, "expected focus %p, got %p\n", ourWnd, GetFocus());
+
+ ret = PostMessageA(wnd_event.hwnd, WM_QUIT, 0, 0);
+ ok(ret, "PostMessageA(WM_QUIT) error %d\n", GetLastError());
+
+ ok(WaitForSingleObject(hThread, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n");
+ CloseHandle(hThread);
DestroyWindow(ourWnd);
DestroyWindow(Wnd2);
}
diff --git a/server/queue.c b/server/queue.c
index 30869a0..374a965 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -1068,6 +1068,14 @@ int attach_thread_input( struct thread *thread_from, struct thread *thread_to )
struct thread_input *input;
int ret;
+ /* do not create a message queue for foreign threads */
+ if ((!thread_to->queue && thread_to != current) ||
+ (!thread_from->queue && thread_from != current))
+ {
+ set_error( STATUS_INVALID_PARAMETER );
+ return 0;
+ }
+
if (!thread_to->queue && !(thread_to->queue = create_msg_queue( thread_to, NULL ))) return 0;
if (!(desktop = get_thread_desktop( thread_from, 0 ))) return 0;
input = (struct thread_input *)grab_object( thread_to->queue->input );
--
2.4.0

View File

@ -1,2 +0,0 @@
Fixes: [38562] Do not create foreign thread queues for attach_thread_input requests
Category: stable

View File

@ -1,24 +0,0 @@
From a849696bf25a87a84a565d8818fa1d4f5b1ebde3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 15 May 2015 19:55:13 +0200
Subject: wininet: Fix memory leak by not calling get_cookie_header twice.
---
dlls/wininet/http.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index cd2cdcf..45183cf 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -4244,7 +4244,6 @@ static void HTTP_InsertCookies(http_request_t *request)
if(res != ERROR_SUCCESS || !cookies)
return;
- get_cookie_header(request->server->name, request->path, &cookies);
HTTP_HttpAddRequestHeadersW(request, cookies, strlenW(cookies), HTTP_ADDREQ_FLAG_REPLACE);
heap_free(cookies);
}
--
2.4.0