Removed various patches (accepted upstream).

This commit is contained in:
Sebastian Lackner 2015-05-05 20:59:51 +02:00
parent ab87b19a87
commit 52e3343bbb
16 changed files with 59 additions and 431 deletions

View File

@ -199,7 +199,7 @@ for more details.*
* Prevent window managers from grouping all wine programs together ([Wine Bug #32699](https://bugs.winehq.org/show_bug.cgi?id=32699))
* Process APC calls before starting process
* Process Hacker 2.x needs ntoskrnl.ProbeForRead ([Wine Bug #38103](https://bugs.winehq.org/show_bug.cgi?id=38103))
* Properly handle closing sockets during a select call ([Wine Bug #38399](https://bugs.winehq.org/show_bug.cgi?id=38399))
* ~~Properly handle closing sockets during a select call~~ ([Wine Bug #38399](https://bugs.winehq.org/show_bug.cgi?id=38399))
* 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))
@ -207,7 +207,7 @@ for more details.*
* 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
* Return correct values for GetThreadTimes function ([Wine Bug #20230](https://bugs.winehq.org/show_bug.cgi?id=20230))
* Return failure in NtProtectVirtualMemory when last argument is omitted ([Wine Bug #38495](https://bugs.winehq.org/show_bug.cgi?id=38495))
* ~~Return failure in NtProtectVirtualMemory when last argument is omitted~~ ([Wine Bug #38495](https://bugs.winehq.org/show_bug.cgi?id=38495))
* SO_CONNECT_TIME returns the appropriate time
* Scrolling causes mouse and screen to lock in Call to Power II ([Wine Bug #34559](https://bugs.winehq.org/show_bug.cgi?id=34559))
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](https://bugs.winehq.org/show_bug.cgi?id=35652))

5
debian/changelog vendored
View File

@ -1,8 +1,9 @@
wine-staging (1.7.43) UNRELEASED; urgency=low
* Disable patchset shell32-Default_Folder_ACLs (fixes Wine Staging Bug #265).
* Updated patch to calculate msvcrt exponential math operations with higher precision (fixes Wine Staging Bug #268).
* Removed patch to use lockfree implementation for FD cache.
* Partially removed patches to test behaviour of VirtualProtect / NtProtectVirtualMemory.
* Removed patch to use lockfree implementation for FD cache (accepted upstream).
* Removed patch to properly handle closing sockets during a select call (accepted upstream).
* Removed patches to fix behaviour of VirtualProtect / NtProtectVirtualMemory (accepted upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Mon, 04 May 2015 19:02:02 +0200
wine-staging (1.7.42) unstable; urgency=low

View File

@ -1,60 +0,0 @@
From eb6ad80caabe5a150874986f52461a2fc2a2c01a Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 2 May 2015 18:46:38 +0200
Subject: ntdll: Return failure in NtProtectVirtualMemory when last argument is
omitted.
---
dlls/kernel32/tests/virtual.c | 5 -----
dlls/ntdll/virtual.c | 3 +++
2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c
index 2dea156..4f50df8 100644
--- a/dlls/kernel32/tests/virtual.c
+++ b/dlls/kernel32/tests/virtual.c
@@ -2492,27 +2492,22 @@ static void test_VirtualProtect(void)
SetLastError(0xdeadbeef);
ret = VirtualProtect(base, si.dwPageSize, PAGE_READONLY, NULL);
- todo_wine
ok(!ret, "VirtualProtect should fail\n");
- todo_wine
ok(GetLastError() == ERROR_NOACCESS, "expected ERROR_NOACCESS, got %d\n", GetLastError());
old_prot = 0xdeadbeef;
ret = VirtualProtect(base, si.dwPageSize, PAGE_NOACCESS, &old_prot);
ok(ret, "VirtualProtect failed %d\n", GetLastError());
- todo_wine
ok(old_prot == PAGE_NOACCESS, "got %#x != expected PAGE_NOACCESS\n", old_prot);
addr = base;
size = si.dwPageSize;
status = pNtProtectVirtualMemory(GetCurrentProcess(), &addr, &size, PAGE_READONLY, NULL);
- todo_wine
ok(status == STATUS_ACCESS_VIOLATION, "NtProtectVirtualMemory should fail, got %08x\n", status);
addr = base;
size = si.dwPageSize;
old_prot = 0xdeadbeef;
status = pNtProtectVirtualMemory(GetCurrentProcess(), &addr, &size, PAGE_NOACCESS, &old_prot);
ok(status == STATUS_SUCCESS, "NtProtectVirtualMemory should succeed, got %08x\n", status);
- todo_wine
ok(old_prot == PAGE_NOACCESS, "got %#x != expected PAGE_NOACCESS\n", old_prot);
for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
index 9d29c33..0629816 100644
--- a/dlls/ntdll/virtual.c
+++ b/dlls/ntdll/virtual.c
@@ -2164,6 +2164,9 @@ NTSTATUS WINAPI NtProtectVirtualMemory( HANDLE process, PVOID *addr_ptr, SIZE_T
TRACE("%p %p %08lx %08x\n", process, addr, size, new_prot );
+ if (!old_prot)
+ return STATUS_ACCESS_VIOLATION;
+
if (process != NtCurrentProcess())
{
apc_call_t call;
--
2.3.7

View File

@ -1 +0,0 @@
Fixes: [38495] Return failure in NtProtectVirtualMemory when last argument is omitted

View File

@ -1,2 +1 @@
Fixes: [37338] Support for NtQuerySection
Depends: ntdll-NtProtectVirtualMemory

View File

@ -153,7 +153,6 @@ patch_enable_all ()
enable_ntdll_Heap_FreeLists="$1"
enable_ntdll_Junction_Points="$1"
enable_ntdll_LZNT1_Compression="$1"
enable_ntdll_NtProtectVirtualMemory="$1"
enable_ntdll_NtQuerySection="$1"
enable_ntdll_NtSetLdtEntries="$1"
enable_ntdll_Pipe_SpecialCharacters="$1"
@ -254,7 +253,6 @@ patch_enable_all ()
enable_wpcap_Dynamic_Linking="$1"
enable_ws2_32_APC_Performance="$1"
enable_ws2_32_Connect_Time="$1"
enable_ws2_32_Select="$1"
enable_ws2_32_TransmitFile="$1"
enable_ws2_32_WriteWatches="$1"
enable_ws2_32_getaddrinfo="$1"
@ -538,9 +536,6 @@ patch_enable ()
ntdll-LZNT1_Compression)
enable_ntdll_LZNT1_Compression="$2"
;;
ntdll-NtProtectVirtualMemory)
enable_ntdll_NtProtectVirtualMemory="$2"
;;
ntdll-NtQuerySection)
enable_ntdll_NtQuerySection="$2"
;;
@ -841,9 +836,6 @@ patch_enable ()
ws2_32-Connect_Time)
enable_ws2_32_Connect_Time="$2"
;;
ws2_32-Select)
enable_ws2_32_Select="$2"
;;
ws2_32-TransmitFile)
enable_ws2_32_TransmitFile="$2"
;;
@ -1179,9 +1171,6 @@ if test "$enable_category_stable" -eq 1; then
if test "$enable_ws2_32_Connect_Time" -gt 1; then
abort "Patchset ws2_32-Connect_Time disabled, but category-stable depends on that."
fi
if test "$enable_ws2_32_Select" -gt 1; then
abort "Patchset ws2_32-Select disabled, but category-stable depends on that."
fi
enable_Staging=1
enable_configure_Absolute_RPATH=1
enable_d3d9_Surface_Refcount=1
@ -1217,14 +1206,6 @@ if test "$enable_category_stable" -eq 1; then
enable_wininet_ParseX509EncodedCertificateForListBoxEntry=1
enable_winmm_Delay_Import_Depends=1
enable_ws2_32_Connect_Time=1
enable_ws2_32_Select=1
fi
if test "$enable_winedevice_Fix_Relocation" -eq 1; then
if test "$enable_ntdll_NtProtectVirtualMemory" -gt 1; then
abort "Patchset ntdll-NtProtectVirtualMemory disabled, but winedevice-Fix_Relocation depends on that."
fi
enable_ntdll_NtProtectVirtualMemory=1
fi
if test "$enable_shell32_SHFileOperation" -eq 1; then
@ -1346,13 +1327,6 @@ if test "$enable_ntdll_RtlIpStringToAddress" -eq 1; then
enable_ntdll_LZNT1_Compression=1
fi
if test "$enable_ntdll_NtQuerySection" -eq 1; then
if test "$enable_ntdll_NtProtectVirtualMemory" -gt 1; then
abort "Patchset ntdll-NtProtectVirtualMemory disabled, but ntdll-NtQuerySection depends on that."
fi
enable_ntdll_NtProtectVirtualMemory=1
fi
if test "$enable_ntdll_Junction_Points" -eq 1; then
if test "$enable_ntdll_Fix_Free" -gt 1; then
abort "Patchset ntdll-Fix_Free disabled, but ntdll-Junction_Points depends on that."
@ -1625,6 +1599,23 @@ 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:
@ -1644,23 +1635,6 @@ 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:
@ -3611,21 +3585,6 @@ if test "$enable_ntdll_LZNT1_Compression" -eq 1; then
) >> "$patchlist"
fi
# Patchset ntdll-NtProtectVirtualMemory
# |
# | This patchset fixes the following Wine bugs:
# | * [#38495] Return failure in NtProtectVirtualMemory when last argument is omitted
# |
# | Modified files:
# | * dlls/kernel32/tests/virtual.c, dlls/ntdll/virtual.c
# |
if test "$enable_ntdll_NtProtectVirtualMemory" -eq 1; then
patch_apply ntdll-NtProtectVirtualMemory/0001-ntdll-Return-failure-in-NtProtectVirtualMemory-when-.patch
(
echo '+ { "Sebastian Lackner", "ntdll: Return failure in NtProtectVirtualMemory when last argument is omitted.", 1 },';
) >> "$patchlist"
fi
# Patchset ntdll-NtQuerySection
# |
# | This patchset fixes the following Wine bugs:
@ -4724,16 +4683,12 @@ fi
# | * [#34517] Add support for wbemprox Win32_SystemEnclosure table
# |
# | Modified files:
# | * dlls/wbemprox/builtin.c, dlls/wbemprox/table.c, dlls/wbemprox/tests/query.c
# | * dlls/wbemprox/builtin.c, dlls/wbemprox/table.c
# |
if test "$enable_wbemprox_Win32_SystemEnclosure" -eq 1; then
patch_apply wbemprox-Win32_SystemEnclosure/0001-wbemprox-tests-Actually-test-the-return-value-of-IEn.patch
patch_apply wbemprox-Win32_SystemEnclosure/0002-wbemprox-tests-Fix-memory-leak-when-tests-are-skippe.patch
patch_apply wbemprox-Win32_SystemEnclosure/0003-wbemprox-Fix-handling-of-arrays-as-query-results.patch
patch_apply wbemprox-Win32_SystemEnclosure/0004-wbemprox-Add-support-for-Win32_SystemEnclosure.patch
patch_apply wbemprox-Win32_SystemEnclosure/0001-wbemprox-Fix-handling-of-arrays-as-query-results.patch
patch_apply wbemprox-Win32_SystemEnclosure/0002-wbemprox-Add-support-for-Win32_SystemEnclosure.patch
(
echo '+ { "Sebastian Lackner", "wbemprox/tests: Actually test the return value of IEnumWbemClassObject_Next.", 1 },';
echo '+ { "Sebastian Lackner", "wbemprox/tests: Fix memory leak when tests are skipped.", 1 },';
echo '+ { "Sebastian Lackner", "wbemprox: Fix handling of arrays as query results.", 1 },';
echo '+ { "Michael Müller", "wbemprox: Add support for Win32_SystemEnclosure.", 1 },';
) >> "$patchlist"
@ -5170,23 +5125,6 @@ if test "$enable_ws2_32_Connect_Time" -eq 1; then
) >> "$patchlist"
fi
# Patchset ws2_32-Select
# |
# | This patchset fixes the following Wine bugs:
# | * [#38399] Properly handle closing sockets during a select call
# |
# | Modified files:
# | * dlls/ntdll/ntdll.spec, dlls/ntdll/server.c, dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c, include/wine/server.h
# |
if test "$enable_ws2_32_Select" -eq 1; then
patch_apply ws2_32-Select/0001-ntdll-Introduce-a-helper-function-to-check-for-exist.patch
patch_apply ws2_32-Select/0002-ws2_32-Properly-handle-closing-sockets-during-a-sele.patch
(
echo '+ { "Sebastian Lackner", "ntdll: Introduce a helper function to check for existance of server handles.", 1 },';
echo '+ { "Sebastian Lackner", "ws2_32: Properly handle closing sockets during a select call.", 1 },';
) >> "$patchlist"
fi
# Patchset ws2_32-TransmitFile
# |
# | This patchset fixes the following Wine bugs:

View File

@ -1,26 +0,0 @@
From edbc92c9930ae5778ddee9426218f1b4c7ee10bb Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 17 Apr 2015 06:49:55 +0200
Subject: wbemprox/tests: Actually test the return value of
IEnumWbemClassObject_Next.
---
dlls/wbemprox/tests/query.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/wbemprox/tests/query.c b/dlls/wbemprox/tests/query.c
index 7e031d2..88e8fb4 100644
--- a/dlls/wbemprox/tests/query.c
+++ b/dlls/wbemprox/tests/query.c
@@ -382,7 +382,7 @@ static void test_Win32_ComputerSystem( IWbemServices *services )
return;
}
- IEnumWbemClassObject_Next( result, 10000, 1, &service, &count );
+ hr = IEnumWbemClassObject_Next( result, 10000, 1, &service, &count );
ok( hr == S_OK, "got %08x\n", hr );
type = 0xdeadbeef;
--
2.3.5

View File

@ -1,58 +0,0 @@
From 2534d6561452c812cf539c2ca81c464bee83521d Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 17 Apr 2015 07:58:06 +0200
Subject: wbemprox/tests: Fix memory leak when tests are skipped.
---
dlls/wbemprox/tests/query.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/dlls/wbemprox/tests/query.c b/dlls/wbemprox/tests/query.c
index 88e8fb4..02774db 100644
--- a/dlls/wbemprox/tests/query.c
+++ b/dlls/wbemprox/tests/query.c
@@ -158,7 +158,7 @@ static void test_Win32_Service( IWbemServices *services )
if (hr != S_OK)
{
win_skip( "Win32_Service not available\n" );
- return;
+ goto out;
}
type = 0xdeadbeef;
VariantInit( &state );
@@ -232,6 +232,7 @@ static void test_Win32_Service( IWbemServices *services )
ok( hr == S_OK, "got %08x\n", hr );
if (service) IWbemClassObject_Release( service );
+out:
SysFreeString( empty );
SysFreeString( class );
}
@@ -372,14 +373,14 @@ static void test_Win32_ComputerSystem( IWbemServices *services )
if (!compname[0] || !username[0])
{
skip( "Failed to get user or computer name\n" );
- return;
+ goto out;
}
hr = IWbemServices_ExecQuery( services, wql, query, 0, NULL, &result );
if (hr != S_OK)
{
win_skip( "Win32_ComputerSystem not available\n" );
- return;
+ goto out;
}
hr = IEnumWbemClassObject_Next( result, 10000, 1, &service, &count );
@@ -405,6 +406,7 @@ static void test_Win32_ComputerSystem( IWbemServices *services )
IWbemClassObject_Release( service );
IEnumWbemClassObject_Release( result );
+out:
SysFreeString( query );
SysFreeString( wql );
}
--
2.3.5

View File

@ -1,19 +1,19 @@
From 17105a18c3e8a754e5158ff99e8ce367aed113ac Mon Sep 17 00:00:00 2001
From 3c2152778b13105e423a33889692c3b12f58653b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Sat, 6 Jul 2013 19:18:48 +0200
Subject: wined3d: Poll queries automatically in the CS
---
dlls/wined3d/cs.c | 76 ++++++--------
dlls/wined3d/query.c | 225 ++++++++++++++++++++++++++---------------
dlls/wined3d/query.c | 221 ++++++++++++++++++++++++++---------------
dlls/wined3d/wined3d_private.h | 7 +-
3 files changed, 180 insertions(+), 128 deletions(-)
3 files changed, 178 insertions(+), 126 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index d182150..cb969a0 100644
index d97ef5b..8256707 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -68,7 +68,6 @@ enum wined3d_cs_op
@@ -69,7 +69,6 @@ enum wined3d_cs_op
WINED3D_CS_OP_RESOURCE_MAP,
WINED3D_CS_OP_RESOURCE_UNMAP,
WINED3D_CS_OP_QUERY_ISSUE,
@ -21,7 +21,7 @@ index d182150..cb969a0 100644
WINED3D_CS_OP_STOP,
};
@@ -373,16 +372,6 @@ struct wined3d_cs_query_issue
@@ -383,16 +382,6 @@ struct wined3d_cs_query_issue
DWORD flags;
};
@ -38,7 +38,7 @@ index d182150..cb969a0 100644
static void wined3d_cs_submit(struct wined3d_cs *cs, size_t size)
{
LONG new_val = (cs->queue.head + size) & (WINED3D_CS_QUEUE_SIZE - 1);
@@ -1712,8 +1701,9 @@ static UINT wined3d_cs_exec_query_issue(struct wined3d_cs *cs, const void *data)
@@ -1822,8 +1811,9 @@ static UINT wined3d_cs_exec_query_issue(struct wined3d_cs *cs, const void *data)
query->query_ops->query_issue(query, op->flags);
@ -50,7 +50,7 @@ index d182150..cb969a0 100644
return sizeof(*op);
}
@@ -1730,37 +1720,6 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu
@@ -1840,37 +1830,6 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu
cs->ops->submit(cs, sizeof(*op));
}
@ -88,7 +88,7 @@ index d182150..cb969a0 100644
static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop,
@@ -1807,7 +1766,6 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -1918,7 +1877,6 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_RESOURCE_MAP */ wined3d_cs_exec_resource_map,
/* WINED3D_CS_OP_RESOURCE_UNMAP */ wined3d_cs_exec_resource_unmap,
/* WINED3D_CS_OP_QUERY_ISSUE */ wined3d_cs_exec_query_issue,
@ -96,7 +96,7 @@ index d182150..cb969a0 100644
};
static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
@@ -1922,17 +1880,45 @@ void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs,
@@ -2033,17 +1991,45 @@ void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs,
wined3d_surface_incref(cs->onscreen_depth_stencil);
}
@ -143,7 +143,7 @@ index d182150..cb969a0 100644
{
continue;
diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
index 098197b..dffad6f 100644
index 9bdb35e..9f1f5ad 100644
--- a/dlls/wined3d/query.c
+++ b/dlls/wined3d/query.c
@@ -241,6 +241,15 @@ ULONG CDECL wined3d_query_decref(struct wined3d_query *query)
@ -406,10 +406,10 @@ index 098197b..dffad6f 100644
GLuint available;
GLuint64 timestamp;
- HRESULT res;
-
- TRACE("query %p, data %p, size %#x, flags %#x.\n", query, data, size, flags);
+ BOOL ret;
- TRACE("query %p, data %p, size %#x, flags %#x.\n", query, data, size, flags);
-
- if (!tq->context)
- query->state = QUERY_CREATED;
-
@ -468,24 +468,14 @@ index 098197b..dffad6f 100644
}
static void wined3d_timestamp_query_ops_issue(struct wined3d_query *query, DWORD flags)
@@ -657,15 +709,14 @@ static HRESULT wined3d_timestamp_disjoint_query_ops_get_data(struct wined3d_quer
@@ -657,7 +709,6 @@ static HRESULT wined3d_timestamp_disjoint_query_ops_get_data(struct wined3d_quer
void *data, DWORD size, DWORD flags)
{
TRACE("query %p, data %p, size %#x, flags %#x.\n", query, data, size, flags);
-
if (query->type == WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT)
{
static const struct wined3d_query_data_timestamp_disjoint disjoint_data = {FALSE, 1000 * 1000 * 1000};
if (query->state == QUERY_BUILDING)
{
- TRACE("Query is building, returning S_FALSE.\n");
- return S_FALSE;
+ TRACE("Query is building, returning S_FALSE.\n");
+ return S_FALSE;
}
fill_query_data(data, size, &disjoint_data, sizeof(disjoint_data));
static const struct wined3d_query_data_timestamp_disjoint disjoint_data = {1000 * 1000 * 1000, FALSE};
@@ -679,6 +730,11 @@ static HRESULT wined3d_timestamp_disjoint_query_ops_get_data(struct wined3d_quer
return S_OK;
}
@ -536,10 +526,10 @@ index 098197b..dffad6f 100644
return WINED3D_OK;
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index cabc227..936ed73 100644
index 56d9b0c..4c4ee51 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1079,6 +1079,7 @@ struct wined3d_occlusion_query
@@ -1090,6 +1090,7 @@ struct wined3d_occlusion_query
struct list entry;
GLuint id;
struct wined3d_context *context;
@ -547,7 +537,7 @@ index cabc227..936ed73 100644
};
union wined3d_gl_query_object
@@ -1114,6 +1115,7 @@ struct wined3d_timestamp_query
@@ -1125,6 +1126,7 @@ struct wined3d_timestamp_query
struct list entry;
GLuint id;
struct wined3d_context *context;
@ -555,7 +545,7 @@ index cabc227..936ed73 100644
};
void context_alloc_timestamp_query(struct wined3d_context *context, struct wined3d_timestamp_query *query) DECLSPEC_HIDDEN;
@@ -2586,6 +2588,7 @@ struct wined3d_cs
@@ -2610,6 +2612,7 @@ struct wined3d_cs
struct wined3d_cs_queue queue;
LONG pending_presents;
@ -563,7 +553,7 @@ index cabc227..936ed73 100644
};
struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) DECLSPEC_HIDDEN;
@@ -2679,6 +2682,7 @@ enum query_state {
@@ -2705,6 +2708,7 @@ enum query_state {
struct wined3d_query_ops
{
HRESULT (*query_get_data)(struct wined3d_query *query, void *data, DWORD data_size, DWORD flags);
@ -571,7 +561,7 @@ index cabc227..936ed73 100644
void (*query_issue)(struct wined3d_query *query, DWORD flags);
};
@@ -2694,7 +2698,8 @@ struct wined3d_query
@@ -2720,7 +2724,8 @@ struct wined3d_query
DWORD data_size;
void *extendedData;
@ -582,5 +572,5 @@ index cabc227..936ed73 100644
/* TODO: Add tests and support for FLOAT16_4 POSITIONT, D3DCOLOR position, other
--
2.2.2
2.3.7

View File

@ -2773,10 +2773,10 @@ diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
return TRUE;
return FALSE;
}
@@ -711,6 +948,26 @@
{
TRACE("Query is building, returning S_FALSE.\n");
return S_FALSE;
@@ -703,6 +940,18 @@
void *data, DWORD size, DWORD flags)
{
TRACE("query %p, data %p, size %#x, flags %#x.\n", query, data, size, flags);
+#else /* STAGING_CSMT */
+ query->state = QUERY_SIGNALLED;
+
@ -2788,19 +2788,11 @@ diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
+{
+ TRACE("query %p, data %p, size %#x, flags %#x.\n", query, data, size, flags);
+
+ if (query->type == WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT)
+ {
+ static const struct wined3d_query_data_timestamp_disjoint disjoint_data = {FALSE, 1000 * 1000 * 1000};
+
+ if (query->state == QUERY_BUILDING)
+ {
+ TRACE("Query is building, returning S_FALSE.\n");
+ return S_FALSE;
+#endif /* STAGING_CSMT */
}
fill_query_data(data, size, &disjoint_data, sizeof(disjoint_data));
@@ -724,6 +981,7 @@
if (query->type == WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT)
{
static const struct wined3d_query_data_timestamp_disjoint disjoint_data = {1000 * 1000 * 1000, FALSE};
@@ -724,6 +973,7 @@
return S_OK;
}
@ -2808,7 +2800,7 @@ diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
static BOOL wined3d_timestamp_disjoint_query_ops_poll(struct wined3d_query *query)
{
return TRUE;
@@ -760,6 +1018,41 @@
@@ -760,6 +1010,41 @@
{
wined3d_timestamp_disjoint_query_ops_get_data,
wined3d_timestamp_disjoint_query_ops_poll,
@ -2850,7 +2842,7 @@ diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
wined3d_timestamp_disjoint_query_ops_issue,
};
@@ -781,6 +1074,7 @@
@@ -781,6 +1066,7 @@
}
query->query_ops = &occlusion_query_ops;
query->data_size = sizeof(DWORD);
@ -2858,7 +2850,7 @@ diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
query->extendedData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
sizeof(struct wined3d_occlusion_query));
if (!query->extendedData)
@@ -788,6 +1082,15 @@
@@ -788,6 +1074,15 @@
ERR("Failed to allocate occlusion query extended data.\n");
return E_OUTOFMEMORY;
}
@ -2874,7 +2866,7 @@ diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
break;
case WINED3D_QUERY_TYPE_EVENT:
@@ -860,7 +1163,9 @@
@@ -860,7 +1155,9 @@
query->state = QUERY_CREATED;
query->device = device;
query->ref = 1;

View File

@ -1,2 +1 @@
Fixes: [28254] Fix crash of winedevice when relocation entry crosses page boundary
Depends: ntdll-NtProtectVirtualMemory

View File

@ -1,99 +0,0 @@
From b474b9b40dc95c477890ef0b1407e647b46a22d0 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 30 Apr 2015 05:43:21 +0200
Subject: ntdll: Introduce a helper function to check for existance of server
handles.
---
dlls/ntdll/ntdll.spec | 1 +
dlls/ntdll/server.c | 21 +++++++++++++++++++++
dlls/ws2_32/socket.c | 13 ++++---------
include/wine/server.h | 1 +
4 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 28165ef..0c73380 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1417,6 +1417,7 @@
# Server interface
@ cdecl -norelay wine_server_call(ptr)
@ cdecl wine_server_fd_to_handle(long long long ptr)
+@ cdecl wine_server_handle_exists(long long)
@ cdecl wine_server_handle_to_fd(long long ptr ptr)
@ cdecl wine_server_release_fd(long long)
@ cdecl wine_server_send_fd(long)
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
index 69d01be..03f85ff 100644
--- a/dlls/ntdll/server.c
+++ b/dlls/ntdll/server.c
@@ -974,6 +974,27 @@ int CDECL wine_server_fd_to_handle( int fd, unsigned int access, unsigned int at
/***********************************************************************
+ * wine_server_handle_exists (NTDLL.@)
+ *
+ * Checks if a file handle exists (without duplicating it).
+ *
+ * PARAMS
+ * handle [I] Wine file handle.
+ * access [I] Win32 file access rights requested.
+ *
+ * RETURNS
+ * NTSTATUS code
+ */
+int CDECL wine_server_handle_exists( HANDLE handle, unsigned int access )
+{
+ int unix_fd, needs_close, ret;
+ ret = server_get_unix_fd( handle, access, &unix_fd, &needs_close, NULL, NULL );
+ if (!ret && needs_close) close( unix_fd );
+ return !ret;
+}
+
+
+/***********************************************************************
* wine_server_handle_to_fd (NTDLL.@)
*
* Retrieve the file descriptor corresponding to a file handle.
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index ef43186..22dd084 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -2940,18 +2940,13 @@ int WINAPI WS_bind(SOCKET s, const struct WS_sockaddr* name, int namelen)
*/
int WINAPI WS_closesocket(SOCKET s)
{
- int res = SOCKET_ERROR, fd;
+ int res = SOCKET_ERROR;
if (num_startup)
{
- fd = get_sock_fd(s, FILE_READ_DATA, NULL);
- if (fd >= 0)
- {
- release_sock_fd(s, fd);
- if (CloseHandle(SOCKET2HANDLE(s)))
- res = 0;
- }
- else
+ if (!wine_server_handle_exists(SOCKET2HANDLE(s), FILE_READ_DATA))
SetLastError(WSAENOTSOCK);
+ else if (CloseHandle(SOCKET2HANDLE(s)))
+ res = 0;
}
else
SetLastError(WSANOTINITIALISED);
diff --git a/include/wine/server.h b/include/wine/server.h
index d573d1f..a114cf9 100644
--- a/include/wine/server.h
+++ b/include/wine/server.h
@@ -52,6 +52,7 @@ struct __server_request_info
extern unsigned int wine_server_call( void *req_ptr );
extern void CDECL wine_server_send_fd( int fd );
extern int CDECL wine_server_fd_to_handle( int fd, unsigned int access, unsigned int attributes, HANDLE *handle );
+extern int CDECL wine_server_handle_exists( HANDLE handle, unsigned int access );
extern int CDECL wine_server_handle_to_fd( HANDLE handle, unsigned int access, int *unix_fd, unsigned int *options );
extern void CDECL wine_server_release_fd( HANDLE handle, int unix_fd );
--
2.3.5

View File

@ -1,45 +0,0 @@
From d0e3cdea2ff7ef0d2b2d3959d00538d1473cac70 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 30 Apr 2015 05:43:26 +0200
Subject: ws2_32: Properly handle closing sockets during a select call.
Based on a patch by Bruno Jesus.
---
dlls/ws2_32/socket.c | 8 +++++++-
dlls/ws2_32/tests/sock.c | 1 -
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 22dd084..15e4dce 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -4768,7 +4768,13 @@ static void release_poll_fds( const WS_fd_set *readfds, const WS_fd_set *writefd
if (exceptfds)
{
for (i = 0; i < exceptfds->fd_count; i++, j++)
- if (fds[j].fd != -1) release_sock_fd( exceptfds->fd_array[i], fds[j].fd );
+ {
+ if (fds[j].fd == -1) continue;
+ release_sock_fd( exceptfds->fd_array[i], fds[j].fd );
+ if (!(fds[j].revents & POLLHUP)) continue;
+ if (!wine_server_handle_exists( SOCKET2HANDLE(exceptfds->fd_array[i]), 0 ))
+ fds[j].revents = 0;
+ }
}
}
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index f31539f..d67a47d 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -3834,7 +3834,6 @@ todo_wine
FD_ZERO_ALL();
FD_SET_ALL(fdWrite);
ret = select(0, &readfds, NULL, &exceptfds, &select_timeout);
-todo_wine
ok(ret == 1, "expected 1, got %d\n", ret);
ok(FD_ISSET(fdWrite, &readfds), "fdWrite socket is not in the set\n");
WaitForSingleObject (thread_handle, 1000);
--
2.3.5

View File

@ -1,2 +0,0 @@
Fixes: [38399] Properly handle closing sockets during a select call
Category: stable