Compare commits

...

17 Commits

Author SHA1 Message Date
Alistair Leslie-Hughes
a701f0ed4c Release 3.14 2018-08-20 08:21:50 +10:00
Zebediah Figura
c58c70e961 Rebase against c698682b3286d72cc7c4c4624b4d14b03dbe6908. 2018-08-18 11:37:45 -05:00
Zebediah Figura
93e4c328d7 Rebase against ccf6211c0ae6e86218f7e6c1f2fe725a23e568b9. 2018-08-16 23:11:33 -05:00
Zebediah Figura
06c1bde586 patchutils.py: fix crash when a patch deletes a file 2018-08-16 22:05:28 -05:00
Alistair Leslie-Hughes
ec47c04ab3 Rebase against d744f367d263a131feee96e103fb8220e8400b53 2018-08-16 10:22:07 +10:00
Alistair Leslie-Hughes
e7bff1bb4f Rebase against ba9f3dc198dfc81bb40159077b73b797006bb73c 2018-08-15 10:06:08 +10:00
Alistair Leslie-Hughes
39cafb1db1 Updated ML-patchset
Dropped the FILE_FLAG_WRITE_THROUGH patches since they appear to be breaking multiple applications.
Bug 45599, 45604.
2018-08-10 20:17:50 +10:00
Alistair Leslie-Hughes
49f93040fe Updated ntdll-futex-condition-var patchset 2018-08-10 19:59:21 +10:00
Zebediah Figura
af0347a0f2 ntdll-SystemModuleInformation: Add patchset. 2018-08-09 14:25:29 -05:00
Zebediah Figura
0e828a225e wow64cpu-Wow64Transition: Remove wow64cpu -> kernel32 dependencies. 2018-08-09 14:23:15 -05:00
Zebediah Figura
eb5196c132 winebuild-Fake_Dlls: Fix __wine_syscall_dispatcher to return to the ntdll syscall thunk on i386.
Based on a patch by Andrew Wesie.

League of Legends hooks the RET instruction in some cases, so we need to
return to that frame.

Fixes https://bugs.winehq.org/show_bug.cgi?id=45573
2018-08-09 00:22:03 -05:00
Zebediah Figura
f45bfd8af7 ntdll-RtlCreateUserThread: Add patchset. 2018-08-09 00:17:55 -05:00
Zebediah Figura
d9dc36f879 ntdll-LdrInitializeThunk: Add patchset. 2018-08-09 00:11:16 -05:00
Zebediah Figura
2c7a662655 wow64cpu-Wow64Transition: Add patchset. 2018-08-09 00:11:16 -05:00
Zebediah Figura
ec218012c3 winepulse-PulseAudio_Support: Add patch.
Should fix https://bugs.winehq.org/show_bug.cgi?id=45589.
2018-08-08 23:37:48 -05:00
Zebediah Figura
c2d58dc59a ntdll-futex-condition-var: Update.
With extended thanks to Andrew Wesie.

Should finally put https://bugs.winehq.org/show_bug.cgi?id=45558 to rest.
2018-08-08 22:54:50 -05:00
Alistair Leslie-Hughes
2f3ba1fb46 Update ntdll-futex-condition-var patch
Correct MacOS build error
2018-08-04 17:37:00 +10:00
157 changed files with 1863 additions and 14230 deletions

View File

@@ -1,2 +0,0 @@
Depends: ml-array_size
Depends: ml-patches

View File

@@ -1,7 +1,7 @@
From 31a5f689a12c1db6edcc86dcd8e81f38a5f19fc5 Mon Sep 17 00:00:00 2001
From baff5c160cf7f1ac0011bf8f55d506bf0346e1fd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 7 Aug 2017 02:53:06 +0200
Subject: user32: Start explorer.exe using limited rights.
Subject: [PATCH] user32: Start explorer.exe using limited rights.
---
dlls/advapi32/tests/security.c | 4 ++--
@@ -9,10 +9,10 @@ Subject: user32: Start explorer.exe using limited rights.
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index f1a64e29dea..52524ee6fe2 100644
index f27642e7a7..0271cd72e0 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -7387,7 +7387,7 @@ static void test_token_security_descriptor(void)
@@ -7313,7 +7313,7 @@ static void test_token_security_descriptor(void)
ret = GetTokenInformation(token4, TokenIntegrityLevel, buffer_integrity, sizeof(buffer_integrity), &size);
ok(ret, "GetTokenInformation failed with error %u\n", GetLastError());
tml = (TOKEN_MANDATORY_LABEL *)buffer_integrity;
@@ -21,7 +21,7 @@ index f1a64e29dea..52524ee6fe2 100644
size = 0;
ret = GetKernelObjectSecurity(token4, LABEL_SECURITY_INFORMATION, NULL, 0, &size);
@@ -7841,7 +7841,7 @@ static void test_child_token_sd_medium(void)
@@ -7768,7 +7768,7 @@ static void test_child_token_sd_medium(void)
ret = GetTokenInformation(token, TokenIntegrityLevel, buffer_integrity, sizeof(buffer_integrity), &size);
ok(ret, "GetTokenInformation failed with error %u\n", GetLastError());
tml = (TOKEN_MANDATORY_LABEL *)buffer_integrity;
@@ -31,7 +31,7 @@ index f1a64e29dea..52524ee6fe2 100644
HeapFree(GetProcessHeap(), 0, sd);
}
diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index cbf22374374..ea116b9d139 100644
index cbfd8bb14a..8039f54fb0 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -43,6 +43,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(win);
@@ -43,15 +43,15 @@ index cbf22374374..ea116b9d139 100644
static DWORD process_layout = ~0u;
static struct list window_surfaces = LIST_INIT( window_surfaces );
@@ -2067,6 +2069,7 @@ HWND WINAPI GetDesktopWindow(void)
WCHAR app[MAX_PATH + sizeof(explorer)/sizeof(WCHAR)];
WCHAR cmdline[MAX_PATH + (sizeof(explorer) + sizeof(args))/sizeof(WCHAR)];
@@ -2052,6 +2054,7 @@ HWND WINAPI GetDesktopWindow(void)
WCHAR app[MAX_PATH + ARRAY_SIZE( explorer )];
WCHAR cmdline[MAX_PATH + ARRAY_SIZE( explorer ) + ARRAY_SIZE( args )];
WCHAR desktop[MAX_PATH];
+ HANDLE token;
void *redir;
SERVER_START_REQ( set_user_object_info )
@@ -2099,9 +2102,12 @@ HWND WINAPI GetDesktopWindow(void)
@@ -2084,9 +2087,12 @@ HWND WINAPI GetDesktopWindow(void)
strcpyW( cmdline, app );
strcatW( cmdline, args );
@@ -66,7 +66,7 @@ index cbf22374374..ea116b9d139 100644
{
TRACE( "started explorer pid %04x tid %04x\n", pi.dwProcessId, pi.dwThreadId );
WaitForInputIdle( pi.hProcess, 10000 );
@@ -2111,6 +2117,8 @@ HWND WINAPI GetDesktopWindow(void)
@@ -2096,6 +2102,8 @@ HWND WINAPI GetDesktopWindow(void)
else WARN( "failed to start explorer, err %d\n", GetLastError() );
Wow64RevertWow64FsRedirection( redir );
@@ -76,5 +76,5 @@ index cbf22374374..ea116b9d139 100644
{
req->force = 1;
--
2.13.1
2.18.0

View File

@@ -1,20 +1,20 @@
From 71366dad7ac934b2e24cfcf19104b4589b91652a Mon Sep 17 00:00:00 2001
From b14282d138ff6a5ad1d5c152d0a556c9ca648c36 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 7 Aug 2017 03:33:26 +0200
Subject: server: Correctly assign security labels for tokens.
Subject: [PATCH] server: Correctly assign security labels for tokens.
---
dlls/advapi32/tests/security.c | 21 ++++++++++-----------
server/process.c | 8 +-------
dlls/advapi32/tests/security.c | 21 +++++++++--------
server/process.c | 8 +------
server/security.h | 2 +-
server/token.c | 41 ++++++++++++++++++++++++-----------------
server/token.c | 41 ++++++++++++++++++++--------------
4 files changed, 36 insertions(+), 36 deletions(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 52524ee6fe2..a35baab0e25 100644
index 0271cd72e0..3b07e7cd2f 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -7289,7 +7289,6 @@ static void test_token_security_descriptor(void)
@@ -7215,7 +7215,6 @@ static void test_token_security_descriptor(void)
defaulted = TRUE;
ret = GetSecurityDescriptorDacl(sd2, &present, &acl2, &defaulted);
ok(ret, "GetSecurityDescriptorDacl failed with error %u\n", GetLastError());
@@ -22,7 +22,7 @@ index 52524ee6fe2..a35baab0e25 100644
ok(present, "DACL not present\n");
if (present)
@@ -7410,7 +7409,7 @@ static void test_token_security_descriptor(void)
@@ -7336,7 +7335,7 @@ static void test_token_security_descriptor(void)
ok(ret, "GetAce failed with error %u\n", GetLastError());
ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
"Unexpected ACE type %#x\n", ace->Header.AceType);
@@ -31,7 +31,7 @@ index 52524ee6fe2..a35baab0e25 100644
"Expected medium integrity level\n");
}
@@ -7463,8 +7462,8 @@ static void test_token_security_descriptor(void)
@@ -7389,8 +7388,8 @@ static void test_token_security_descriptor(void)
sacl = NULL;
ret = GetSecurityDescriptorSacl(sd3, &present, &sacl, &defaulted);
ok(ret, "GetSecurityDescriptorSacl failed with error %u\n", GetLastError());
@@ -42,7 +42,7 @@ index 52524ee6fe2..a35baab0e25 100644
if (sacl)
{
@@ -7513,8 +7512,8 @@ static void test_token_security_descriptor(void)
@@ -7439,8 +7438,8 @@ static void test_token_security_descriptor(void)
sacl = NULL;
ret = GetSecurityDescriptorSacl(sd3, &present, &sacl, &defaulted);
ok(ret, "GetSecurityDescriptorSacl failed with error %u\n", GetLastError());
@@ -53,7 +53,7 @@ index 52524ee6fe2..a35baab0e25 100644
if (sacl)
{
@@ -7578,8 +7577,8 @@ static void test_token_security_descriptor(void)
@@ -7504,8 +7503,8 @@ static void test_token_security_descriptor(void)
ret = GetSecurityDescriptorSacl(sd3, &present, &sacl, &defaulted);
ok(ret, "GetSecurityDescriptorSacl failed with error %u\n", GetLastError());
@@ -64,7 +64,7 @@ index 52524ee6fe2..a35baab0e25 100644
if (sacl)
{
@@ -7616,8 +7615,8 @@ static void test_token_security_descriptor(void)
@@ -7542,8 +7541,8 @@ static void test_token_security_descriptor(void)
sacl = NULL;
ret = GetSecurityDescriptorSacl(sd3, &present, &sacl, &defaulted);
ok(ret, "GetSecurityDescriptorSacl failed with error %u\n", GetLastError());
@@ -75,7 +75,7 @@ index 52524ee6fe2..a35baab0e25 100644
if (sacl)
{
@@ -7834,7 +7833,7 @@ static void test_child_token_sd_medium(void)
@@ -7761,7 +7760,7 @@ static void test_child_token_sd_medium(void)
ok(ret, "GetAce failed with error %u\n", GetLastError());
ok(ace_label->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
"Unexpected ACE type %#x\n", ace_label->Header.AceType);
@@ -85,10 +85,10 @@ index 52524ee6fe2..a35baab0e25 100644
memset(buffer_integrity, 0, sizeof(buffer_integrity));
diff --git a/server/process.c b/server/process.c
index ef2452fb8fb..ae998ab80b9 100644
index 7d2206f274..74cc320f44 100644
--- a/server/process.c
+++ b/server/process.c
@@ -571,17 +571,11 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit
@@ -567,17 +567,11 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit
: alloc_handle_table( process, 0 );
/* Note: for security reasons, starting a new process does not attempt
* to use the current impersonation token for the new process */
@@ -108,7 +108,7 @@ index ef2452fb8fb..ae998ab80b9 100644
if (pipe( request_pipe ) == -1)
{
diff --git a/server/security.h b/server/security.h
index 32dfe5f8db9..87377ccd673 100644
index 32dfe5f8db..87377ccd67 100644
--- a/server/security.h
+++ b/server/security.h
@@ -59,7 +59,7 @@ extern int token_assign_label( struct token *token, PSID label );
@@ -121,10 +121,10 @@ index 32dfe5f8db9..87377ccd673 100644
const LUID_AND_ATTRIBUTES *reqprivs,
unsigned int count, LUID_AND_ATTRIBUTES *usedprivs);
diff --git a/server/token.c b/server/token.c
index c507294b49d..c6b0f0d39d3 100644
index 28042471b0..e5639fc0d5 100644
--- a/server/token.c
+++ b/server/token.c
@@ -686,7 +686,7 @@ static int filter_privilege( struct privilege *privilege, const LUID_AND_ATTRIBU
@@ -668,7 +668,7 @@ static int filter_privilege( struct privilege *privilege, const LUID_AND_ATTRIBU
struct token *token_duplicate( struct token *src_token, unsigned primary,
int impersonation_level, const struct security_descriptor *sd,
const LUID_AND_ATTRIBUTES *filter_privileges, unsigned int priv_count,
@@ -133,7 +133,7 @@ index c507294b49d..c6b0f0d39d3 100644
{
const luid_t *modified_id =
primary || (impersonation_level == src_token->impersonation_level) ?
@@ -750,6 +750,12 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
@@ -735,6 +735,12 @@ struct token *token_duplicate( struct token *src_token, unsigned primary,
if (sd) default_set_sd( &token->obj, sd, OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION |
DACL_SECURITY_INFORMATION | SACL_SECURITY_INFORMATION );
@@ -146,7 +146,7 @@ index c507294b49d..c6b0f0d39d3 100644
return token;
}
@@ -922,6 +928,12 @@ struct token *token_create_admin( void )
@@ -907,6 +913,12 @@ struct token *token_create_admin( void )
admin_source, NULL, -1, TokenElevationTypeFull, &high_label_sid );
/* we really need a primary group */
assert( token->primary_group );
@@ -159,7 +159,7 @@ index c507294b49d..c6b0f0d39d3 100644
}
free( logon_sid );
@@ -980,6 +992,12 @@ static struct token *token_create_limited( void )
@@ -965,6 +977,12 @@ static struct token *token_create_limited( void )
admin_source, NULL, -1, TokenElevationTypeLimited, &medium_label_sid );
/* we really need a primary group */
assert( token->primary_group );
@@ -172,7 +172,7 @@ index c507294b49d..c6b0f0d39d3 100644
}
free( logon_sid );
@@ -1448,7 +1466,8 @@ DECL_HANDLER(duplicate_token)
@@ -1433,7 +1451,8 @@ DECL_HANDLER(duplicate_token)
TOKEN_DUPLICATE,
&token_ops )))
{
@@ -182,7 +182,7 @@ index c507294b49d..c6b0f0d39d3 100644
if (token)
{
unsigned int access = req->access ? req->access : get_handle_access( current->process, req->handle );
@@ -1478,7 +1497,7 @@ DECL_HANDLER(filter_token)
@@ -1463,7 +1482,7 @@ DECL_HANDLER(filter_token)
group_count = get_sid_count( filter_groups, get_req_data_size() - priv_count * sizeof(LUID_AND_ATTRIBUTES) );
token = token_duplicate( src_token, src_token->primary, src_token->impersonation_level, NULL,
@@ -191,7 +191,7 @@ index c507294b49d..c6b0f0d39d3 100644
if (token)
{
unsigned int access = get_handle_access( current->process, req->handle );
@@ -1813,23 +1832,11 @@ DECL_HANDLER(set_token_default_dacl)
@@ -1789,23 +1808,11 @@ DECL_HANDLER(set_token_default_dacl)
DECL_HANDLER(create_token)
{
struct token *token;
@@ -218,5 +218,5 @@ index c507294b49d..c6b0f0d39d3 100644
}
}
--
2.13.1
2.18.0

View File

@@ -1,12 +1,12 @@
From a93e855c484c622efedfe9696eac72c32007621d Mon Sep 17 00:00:00 2001
From 04bb8bf7196efb6f7c0a3c5f7524ac8aefc645b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 7 Oct 2017 00:52:34 +0200
Subject: wined3d: Add support for depth bias clamping.
---
dlls/d3d11/device.c | 5 ++++-
dlls/wined3d/adapter_gl.c | 3 +++
dlls/wined3d/cs.c | 1 +
dlls/wined3d/directx.c | 3 +++
dlls/wined3d/state.c | 17 +++++++++++++++--
dlls/wined3d/stateblock.c | 2 ++
dlls/wined3d/utils.c | 1 +
@@ -15,10 +15,10 @@ Subject: wined3d: Add support for depth bias clamping.
8 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index 68d6cf0..9854906 100644
index e6ba31c..f0ff7b3 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -920,7 +920,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon
@@ -933,7 +933,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon
{
DWORD d;
float f;
@@ -27,7 +27,7 @@ index 68d6cf0..9854906 100644
TRACE("iface %p, rasterizer_state %p.\n", iface, rasterizer_state);
@@ -932,6 +932,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon
@@ -945,6 +945,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_CULLMODE, WINED3D_CULL_BACK);
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_SLOPESCALEDEPTHBIAS, 0);
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_DEPTHBIAS, 0);
@@ -35,7 +35,7 @@ index 68d6cf0..9854906 100644
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_SCISSORTESTENABLE, FALSE);
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_MULTISAMPLEANTIALIAS, FALSE);
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_ANTIALIASEDLINEENABLE, FALSE);
@@ -946,8 +947,10 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon
@@ -959,8 +960,10 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_CULLMODE, desc->CullMode);
scale_bias.f = desc->SlopeScaledDepthBias;
const_bias.f = desc->DepthBias;
@@ -46,23 +46,11 @@ index 68d6cf0..9854906 100644
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_SCISSORTESTENABLE, desc->ScissorEnable);
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_MULTISAMPLEANTIALIAS, desc->MultisampleEnable);
wined3d_device_set_render_state(device->wined3d_device,
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 3f1ca8c..aea2cdf 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -1065,6 +1065,7 @@ static void wined3d_cs_exec_set_depth_stencil_view(struct wined3d_cs *cs, const
device_invalidate_state(device, STATE_RENDER(WINED3D_RS_STENCILENABLE));
device_invalidate_state(device, STATE_RENDER(WINED3D_RS_STENCILWRITEMASK));
device_invalidate_state(device, STATE_RENDER(WINED3D_RS_DEPTHBIAS));
+ device_invalidate_state(device, STATE_RENDER(WINED3D_RS_DEPTHBIASCLAMP));
}
else if (prev && prev->format->depth_bias_scale != op->view->format->depth_bias_scale)
{
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index a4e4a0c..e595da5 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -233,6 +233,7 @@ static const struct wined3d_extension_map gl_extension_map[] =
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index 686c79a..dc49c88 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -180,6 +180,7 @@ static const struct wined3d_extension_map gl_extension_map[] =
{"GL_EXT_packed_depth_stencil", EXT_PACKED_DEPTH_STENCIL },
{"GL_EXT_packed_float", EXT_PACKED_FLOAT },
{"GL_EXT_point_parameters", EXT_POINT_PARAMETERS },
@@ -70,7 +58,7 @@ index a4e4a0c..e595da5 100644
{"GL_EXT_provoking_vertex", EXT_PROVOKING_VERTEX },
{"GL_EXT_secondary_color", EXT_SECONDARY_COLOR },
{"GL_EXT_stencil_two_side", EXT_STENCIL_TWO_SIDE },
@@ -3117,6 +3118,8 @@ static void load_gl_funcs(struct wined3d_gl_info *gl_info)
@@ -2473,6 +2474,8 @@ static void load_gl_funcs(struct wined3d_gl_info *gl_info)
/* GL_EXT_point_parameters */
USE_GL_FUNC(glPointParameterfEXT)
USE_GL_FUNC(glPointParameterfvEXT)
@@ -79,6 +67,18 @@ index a4e4a0c..e595da5 100644
/* GL_EXT_provoking_vertex */
USE_GL_FUNC(glProvokingVertexEXT)
/* GL_EXT_secondary_color */
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index d6bc739..515982c 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -1124,6 +1124,7 @@ static void wined3d_cs_exec_set_depth_stencil_view(struct wined3d_cs *cs, const
device_invalidate_state(device, STATE_RENDER(WINED3D_RS_STENCILENABLE));
device_invalidate_state(device, STATE_RENDER(WINED3D_RS_STENCILWRITEMASK));
device_invalidate_state(device, STATE_RENDER(WINED3D_RS_DEPTHBIAS));
+ device_invalidate_state(device, STATE_RENDER(WINED3D_RS_DEPTHBIASCLAMP));
}
else if (prev && prev->format->depth_bias_scale != op->view->format->depth_bias_scale)
{
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 3b2f845..2dd6ac2 100644
--- a/dlls/wined3d/state.c
@@ -138,10 +138,10 @@ index b4d1751..093c740 100644
state->render_states[WINED3D_RS_WRAP9] = 0;
state->render_states[WINED3D_RS_WRAP10] = 0;
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 7cecd8c..0152879 100644
index 861f169..b46f67f 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -4425,6 +4425,7 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
@@ -4652,6 +4652,7 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
D3DSTATE_TO_STR(WINED3D_RS_BLENDFACTOR);
D3DSTATE_TO_STR(WINED3D_RS_SRGBWRITEENABLE);
D3DSTATE_TO_STR(WINED3D_RS_DEPTHBIAS);
@@ -162,10 +162,10 @@ index 525c298..883faaa 100644
EXT_SECONDARY_COLOR,
EXT_STENCIL_TWO_SIDE,
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index bb4ad48..4a5d0dd 100644
index 239ccd8..884e824 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -386,8 +386,9 @@ enum wined3d_render_state
@@ -399,8 +399,9 @@ enum wined3d_render_state
WINED3D_RS_SRCBLENDALPHA = 207,
WINED3D_RS_DESTBLENDALPHA = 208,
WINED3D_RS_BLENDOPALPHA = 209,

View File

@@ -1,2 +1 @@
Fixes: Implement support for more d3d11 depth options in RSSetState.
Fixes: [43848] Implement support for depth bias clamping

View File

@@ -1,26 +0,0 @@
From 34607775675c9475973fd249b8a68a59935b0391 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Thu, 30 Jul 2015 11:57:28 +1000
Subject: d3dx9_36: Return a mesh in D3DXCreateTeapot
Fixes https://bugs.winehq.org/show_bug.cgi?id=36884
---
dlls/d3dx9_36/mesh.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c
index 39d279d..59e385e4 100644
--- a/dlls/d3dx9_36/mesh.c
+++ b/dlls/d3dx9_36/mesh.c
@@ -5153,7 +5153,7 @@ HRESULT WINAPI D3DXCreateTeapot(struct IDirect3DDevice9 *device,
{
FIXME("(%p, %p, %p): stub\n", device, mesh, adjacency);
- return E_NOTIMPL;
+ return D3DXCreateSphere(device, 1.0f, 4, 4, mesh, adjacency);
}
HRESULT WINAPI D3DXCreateTextA(struct IDirect3DDevice9 *device, HDC hdc, const char *text, float deviation,
--
2.5.0

View File

@@ -1 +0,0 @@
Fixes: [36884] Return a valid mesh in D3DXCreateTeapot

View File

@@ -1,4 +1,4 @@
From 07d42b7a75491947866e6edb9d7746ca35274238 Mon Sep 17 00:00:00 2001
From 25c2a52b1109022a01b8f59a22b8a04566af0d3c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 4 Mar 2016 22:22:42 +0100
Subject: [PATCH] ddraw: Set ddsOldCaps correctly in ddraw7_GetCaps.
@@ -12,7 +12,7 @@ Subject: [PATCH] ddraw: Set ddsOldCaps correctly in ddraw7_GetCaps.
5 files changed, 106 insertions(+)
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index ed90478..47f079f 100644
index ed904785dd..47f079fb97 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -1542,6 +1542,8 @@ static HRESULT WINAPI ddraw7_GetCaps(IDirectDraw7 *iface, DDCAPS *DriverCaps, DD
@@ -25,10 +25,10 @@ index ed90478..47f079f 100644
if(DriverCaps)
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index c767d3a..70d4b8f 100644
index d4fe1f294a..29d9d3afb7 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -11411,6 +11411,31 @@ static void test_execute_data(void)
@@ -11538,6 +11538,31 @@ static void test_execute_data(void)
DestroyWindow(window);
}
@@ -60,7 +60,7 @@ index c767d3a..70d4b8f 100644
static void test_viewport(void)
{
static struct
@@ -11686,6 +11711,7 @@ START_TEST(ddraw1)
@@ -11815,6 +11840,7 @@ START_TEST(ddraw1)
test_depth_readback();
test_clear();
test_enum_surfaces();
@@ -69,10 +69,10 @@ index c767d3a..70d4b8f 100644
test_viewport();
}
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 794f90b..9c6055e 100644
index 941d46bf42..752b39568d 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -12673,6 +12673,31 @@ static void test_enum_surfaces(void)
@@ -12800,6 +12800,31 @@ static void test_enum_surfaces(void)
IDirectDraw2_Release(ddraw);
}
@@ -104,7 +104,7 @@ index 794f90b..9c6055e 100644
static void test_viewport(void)
{
static struct
@@ -12977,5 +13002,6 @@ START_TEST(ddraw2)
@@ -13106,5 +13131,6 @@ START_TEST(ddraw2)
test_depth_readback();
test_clear();
test_enum_surfaces();
@@ -112,10 +112,10 @@ index 794f90b..9c6055e 100644
test_viewport();
}
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index 172d99d..c036a6d 100644
index e81472d4f2..4e083ec503 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -14953,6 +14953,31 @@ static void test_viewport(void)
@@ -15089,6 +15089,31 @@ static void test_viewport(void)
DestroyWindow(window);
}
@@ -147,17 +147,17 @@ index 172d99d..c036a6d 100644
START_TEST(ddraw4)
{
DDDEVICEIDENTIFIER identifier;
@@ -15078,4 +15103,5 @@ START_TEST(ddraw4)
@@ -15215,4 +15240,5 @@ START_TEST(ddraw4)
test_clear();
test_enum_surfaces();
test_viewport();
+ test_caps();
}
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 7cbf408..095212b 100644
index 70318a8492..f3dde436d3 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -14417,6 +14417,31 @@ static void test_color_vertex(void)
@@ -15035,6 +15035,31 @@ static void test_color_vertex(void)
DestroyWindow(window);
}
@@ -189,13 +189,13 @@ index 7cbf408..095212b 100644
START_TEST(ddraw7)
{
DDDEVICEIDENTIFIER2 identifier;
@@ -14552,5 +14577,6 @@ START_TEST(ddraw7)
test_clear();
@@ -15172,5 +15197,6 @@ START_TEST(ddraw7)
test_enum_surfaces();
test_viewport();
test_device_load();
+ test_caps();
test_color_vertex();
}
--
1.9.1
2.18.0

View File

@@ -1 +1 @@
Fixes: [45327] Stop access volation in League of Legends
Fixes: [45568] League of Legends 8.12+ fails to start a game (anticheat engine, validation of loaded DLLs)

View File

@@ -1,26 +0,0 @@
From 1b821d7a8398741a164800039535aaad396c299e Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov@codeweavers.com>
Date: Tue, 31 Jul 2018 08:35:01 +0300
Subject: [PATCH] dwrite: Avoid possible out-of-bounds cluster metrics access.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
---
dlls/dwrite/layout.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index 306c1178d4..903e7e8978 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -2089,7 +2089,7 @@ static HRESULT layout_compute_effective_runs(struct dwrite_textlayout *layout)
*/
if (layout->len == 0)
hr = layout_set_dummy_line_metrics(layout, 0);
- else if (layout->clustermetrics[layout->cluster_count - 1].isNewline)
+ else if (layout->cluster_count && layout->clustermetrics[layout->cluster_count - 1].isNewline)
hr = layout_set_dummy_line_metrics(layout, layout->len - 1);
if (FAILED(hr))
return hr;
--
2.18.0

View File

@@ -1,2 +0,0 @@
Fixes: [45535] - dwrite Correct out of access

View File

@@ -1,17 +1,16 @@
From a08076678e154c913713221f8eea87c70c11d788 Mon Sep 17 00:00:00 2001
From 04aceb5470fc9ca9133f7a6269144eb7aa8d6a10 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 13 Jun 2015 05:03:54 +0200
Subject: iphlpapi: Fallback to system ping when ICMP permissions are not
present.
Subject: [PATCH] iphlpapi: Fallback to system ping when ICMP permissions are
not present.
Based on an idea by Bruno Jesus.
---
dlls/iphlpapi/icmp.c | 256 ++++++++++++++++++++++++++++++++++++++++-
dlls/iphlpapi/tests/iphlpapi.c | 2 +-
2 files changed, 251 insertions(+), 7 deletions(-)
dlls/iphlpapi/icmp.c | 256 +++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 250 insertions(+), 6 deletions(-)
diff --git a/dlls/iphlpapi/icmp.c b/dlls/iphlpapi/icmp.c
index ebc2f2b..330dd73a 100644
index 0dc2f12..da3850b 100644
--- a/dlls/iphlpapi/icmp.c
+++ b/dlls/iphlpapi/icmp.c
@@ -5,6 +5,7 @@
@@ -50,7 +49,7 @@ index ebc2f2b..330dd73a 100644
#define USE_WS_PREFIX
@@ -209,6 +216,7 @@ DWORD WINAPI Icmp6SendEcho2(
@@ -212,6 +219,7 @@ DWORD WINAPI Icmp6SendEcho2(
*/
HANDLE WINAPI IcmpCreateFile(VOID)
{
@@ -58,7 +57,7 @@ index ebc2f2b..330dd73a 100644
icmp_t* icp;
int sid=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
@@ -217,15 +225,14 @@ HANDLE WINAPI IcmpCreateFile(VOID)
@@ -220,15 +228,14 @@ HANDLE WINAPI IcmpCreateFile(VOID)
/* Mac OS X supports non-privileged ICMP via SOCK_DGRAM type. */
sid=socket(AF_INET,SOCK_DGRAM,IPPROTO_ICMP);
}
@@ -78,7 +77,7 @@ index ebc2f2b..330dd73a 100644
SetLastError(IP_NO_RESOURCES);
return INVALID_HANDLE_VALUE;
}
@@ -247,11 +254,242 @@ BOOL WINAPI IcmpCloseHandle(HANDLE IcmpHandle)
@@ -250,11 +257,242 @@ BOOL WINAPI IcmpCloseHandle(HANDLE IcmpHandle)
return FALSE;
}
@@ -322,7 +321,7 @@ index ebc2f2b..330dd73a 100644
/***********************************************************************
* IcmpSendEcho (IPHLPAPI.@)
@@ -301,6 +539,12 @@ DWORD WINAPI IcmpSendEcho(
@@ -308,6 +546,12 @@ DWORD WINAPI IcmpSendEcho(
return 0;
}
@@ -335,25 +334,6 @@ index ebc2f2b..330dd73a 100644
/* Prepare the request */
id=getpid() & 0xFFFF;
seq=InterlockedIncrement(&icmp_sequence) & 0xFFFF;
diff --git a/dlls/iphlpapi/tests/iphlpapi.c b/dlls/iphlpapi/tests/iphlpapi.c
index 73e4302..f9c6b99 100644
--- a/dlls/iphlpapi/tests/iphlpapi.c
+++ b/dlls/iphlpapi/tests/iphlpapi.c
@@ -1028,13 +1028,13 @@ todo_wine
replysz = sizeof(ICMP_ECHO_REPLY) + ICMP_MINLEN;
ret = pIcmpSendEcho(icmp, address, senddata, ICMP_MINLEN, NULL, replydata, replysz, 1000);
error = GetLastError();
-todo_wine
ok (ret, "IcmpSendEcho failed unexpectedly with error %d\n", error);
SetLastError(0xdeadbeef);
replysz = sizeof(ICMP_ECHO_REPLY) + ICMP_MINLEN;
ret = pIcmpSendEcho(icmp, address, senddata, ICMP_MINLEN + 1, NULL, replydata, replysz, 1000);
error = GetLastError();
+todo_wine
ok (!ret, "IcmpSendEcho succeeded unexpectedly\n");
todo_wine
ok (error == IP_GENERAL_FAILURE
--
2.8.0
1.9.1

View File

@@ -1,289 +0,0 @@
From fb031b7cf30e5258aa855019961bbdeafb3cfa78 Mon Sep 17 00:00:00 2001
From: Jacek Caban <jacek@codeweavers.com>
Date: Sat, 28 Jul 2018 10:49:59 +1000
Subject: [PATCH] kernel32: Add AttachConsole implementation
---
dlls/kernel32/console.c | 19 +++++-
dlls/kernel32/tests/console.c | 131 +++++++++++++++++++++++++++++++++++++++---
server/console.c | 43 ++++++++++++++
server/protocol.def | 10 ++++
4 files changed, 193 insertions(+), 10 deletions(-)
diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c
index 51061de..1637a87 100644
--- a/dlls/kernel32/console.c
+++ b/dlls/kernel32/console.c
@@ -2909,8 +2909,23 @@ BOOL WINAPI ScrollConsoleScreenBufferW(HANDLE hConsoleOutput, LPSMALL_RECT lpScr
*/
BOOL WINAPI AttachConsole(DWORD dwProcessId)
{
- FIXME("stub %x\n",dwProcessId);
- return TRUE;
+ BOOL ret;
+
+ TRACE("(%x)\n", dwProcessId);
+
+ SERVER_START_REQ( attach_console )
+ {
+ req->pid = dwProcessId;
+ ret = !wine_server_call_err( req );
+ if (ret)
+ {
+ SetStdHandle(STD_INPUT_HANDLE, wine_server_ptr_handle(reply->std_in));
+ SetStdHandle(STD_OUTPUT_HANDLE, wine_server_ptr_handle(reply->std_out));
+ SetStdHandle(STD_ERROR_HANDLE, wine_server_ptr_handle(reply->std_err));
+ }
+ }
+ SERVER_END_REQ;
+ return ret;
}
/******************************************************************
diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c
index ac77ab7..acd61d0 100644
--- a/dlls/kernel32/tests/console.c
+++ b/dlls/kernel32/tests/console.c
@@ -208,19 +208,29 @@ static void testEmptyWrite(HANDLE hCon)
okCURSOR(hCon, c);
}
-static void testWriteSimple(HANDLE hCon)
+static void simple_write_console(HANDLE console, const char *text)
{
- COORD c;
- DWORD len;
- const char* mytest = "abcdefg";
- const int mylen = strlen(mytest);
+ DWORD len;
+ COORD c = {0, 0};
+ BOOL ret;
/* single line write */
c.X = c.Y = 0;
- ok(SetConsoleCursorPosition(hCon, c) != 0, "Cursor in upper-left\n");
+ ok(SetConsoleCursorPosition(console, c) != 0, "Cursor in upper-left\n");
+
+ ret = WriteConsoleA(console, text, strlen(text), &len, NULL);
+ ok(ret, "WriteConsoleA failed: %u\n", GetLastError());
+ ok(len == strlen(text), "unexpected len %u\n", len);
+}
+
+static void testWriteSimple(HANDLE hCon)
+{
+ const char* mytest = "abcdefg";
+ int mylen = strlen(mytest);
+ COORD c = {0, 0};
+
+ simple_write_console(hCon, mytest);
- ok(WriteConsoleA(hCon, mytest, mylen, &len, NULL) != 0 && len == mylen, "WriteConsole\n");
- c.Y = 0;
for (c.X = 0; c.X < mylen; c.X++)
{
okCHAR(hCon, c, mytest[c.X], TEST_ATTRIB);
@@ -3019,6 +3029,98 @@ static void test_GetConsoleScreenBufferInfoEx(HANDLE std_output)
ok(GetLastError() == 0xdeadbeef, "got %u, expected 0xdeadbeef\n", GetLastError());
}
+static void test_AttachConsole_child(DWORD console_pid)
+{
+ HANDLE pipe_in, pipe_out;
+ COORD c = {0,0};
+ HANDLE console;
+ char buf[32];
+ DWORD len;
+ BOOL res;
+
+ res = CreatePipe(&pipe_in, &pipe_out, NULL, 0);
+ ok(res, "CreatePipe failed: %u\n", GetLastError());
+
+ res = AttachConsole(console_pid);
+ ok(!res && GetLastError() == ERROR_ACCESS_DENIED,
+ "AttachConsole returned: %x(%u)\n", res, GetLastError());
+
+ res = FreeConsole();
+ ok(res, "FreeConsole failed: %u\n", GetLastError());
+
+ SetStdHandle(STD_ERROR_HANDLE, pipe_out);
+
+ res = AttachConsole(console_pid);
+ ok(res, "AttachConsole failed: %u\n", GetLastError());
+
+ ok(pipe_out != GetStdHandle(STD_ERROR_HANDLE), "std handle not set to console\n");
+
+ console = CreateFileA("CONOUT$", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
+ ok(console != INVALID_HANDLE_VALUE, "Could not open console\n");
+
+ res = ReadConsoleOutputCharacterA(console, buf, 6, c, &len);
+ ok(res, "ReadConsoleOutputCharacterA failed: %u\n", GetLastError());
+ ok(len == 6, "len = %u\n", len);
+ ok(!memcmp(buf, "Parent", 6), "Unexpected console output\n");
+
+ res = FreeConsole();
+ ok(res, "FreeConsole failed: %u\n", GetLastError());
+
+ SetStdHandle(STD_INPUT_HANDLE, pipe_in);
+ SetStdHandle(STD_OUTPUT_HANDLE, pipe_out);
+
+ res = AttachConsole(ATTACH_PARENT_PROCESS);
+ ok(res, "AttachConsole failed: %u\n", GetLastError());
+
+ ok(pipe_in != GetStdHandle(STD_INPUT_HANDLE), "std handle not set to console\n");
+ ok(pipe_out != GetStdHandle(STD_OUTPUT_HANDLE), "std handle not set to console\n");
+
+ console = CreateFileA("CONOUT$", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
+ ok(console != INVALID_HANDLE_VALUE, "Could not open console\n");
+
+ res = ReadConsoleOutputCharacterA(console, buf, 6, c, &len);
+ ok(res, "ReadConsoleOutputCharacterA failed: %u\n", GetLastError());
+ ok(len == 6, "len = %u\n", len);
+ ok(!memcmp(buf, "Parent", 6), "Unexpected console output\n");
+
+ simple_write_console(console, "Child");
+ CloseHandle(console);
+
+ res = FreeConsole();
+ ok(res, "FreeConsole failed: %u\n", GetLastError());
+
+ res = CloseHandle(pipe_in);
+ ok(res, "pipe_in is no longer valid\n");
+ res = CloseHandle(pipe_out);
+ ok(res, "pipe_out is no longer valid\n");
+}
+
+static void test_AttachConsole(HANDLE console)
+{
+ STARTUPINFOA si = { sizeof(si) };
+ PROCESS_INFORMATION info;
+ char **argv, buf[MAX_PATH];
+ COORD c = {0,0};
+ DWORD len;
+ BOOL res;
+
+ simple_write_console(console, "Parent console");
+
+ winetest_get_mainargs(&argv);
+ sprintf(buf, "\"%s\" console attach_console %x", argv[0], GetCurrentProcessId());
+ res = CreateProcessA(NULL, buf, NULL, NULL, TRUE, 0, NULL, NULL, &si, &info);
+ ok(res, "CreateProcess failed: %u\n", GetLastError());
+ CloseHandle(info.hThread);
+
+ winetest_wait_child_process(info.hProcess);
+ CloseHandle(info.hProcess);
+
+ res = ReadConsoleOutputCharacterA(console, buf, 5, c, &len);
+ ok(res, "ReadConsoleOutputCharacterA failed: %u\n", GetLastError());
+ ok(len == 5, "len = %u\n", len);
+ ok(!memcmp(buf, "Child", 5), "Unexpected console output\n");
+}
+
START_TEST(console)
{
static const char font_name[] = "Lucida Console";
@@ -3030,9 +3132,21 @@ START_TEST(console)
char old_font[LF_FACESIZE];
BOOL delete = FALSE;
DWORD size;
+ char **argv;
+ int argc;
init_function_pointers();
+ argc = winetest_get_mainargs(&argv);
+
+ if (argc > 3 && !strcmp(argv[2], "attach_console"))
+ {
+ DWORD parent_pid;
+ sscanf(argv[3], "%x", &parent_pid);
+ test_AttachConsole_child(parent_pid);
+ return;
+ }
+
/* be sure we have a clean console (and that's our own)
* FIXME: this will make the test fail (currently) if we don't run
* under X11
@@ -3170,4 +3284,5 @@ START_TEST(console)
test_GetConsoleFontInfo(hConOut);
test_SetConsoleFont(hConOut);
test_GetConsoleScreenBufferInfoEx(hConOut);
+ test_AttachConsole(hConOut);
}
diff --git a/server/console.c b/server/console.c
index 058c8ce..8460a7f 100644
--- a/server/console.c
+++ b/server/console.c
@@ -1546,6 +1546,49 @@ DECL_HANDLER(open_console)
else if (!get_error()) set_error( STATUS_ACCESS_DENIED );
}
+/* attach to a other process's console */
+DECL_HANDLER(attach_console)
+{
+ struct process *process;
+
+ if (current->process->console)
+ {
+ set_error( STATUS_ACCESS_DENIED );
+ return;
+ }
+
+ process = get_process_from_id( req->pid == ATTACH_PARENT_PROCESS
+ ? current->process->parent_id : req->pid );
+ if (!process) return;
+
+ if (process->console && process->console->active )
+ {
+ reply->std_in = alloc_handle( current->process, process->console, GENERIC_READ, 0 );
+ if (!reply->std_in) goto error;
+
+ reply->std_out = alloc_handle( current->process, process->console->active, GENERIC_WRITE, 0 );
+ if (!reply->std_out) goto error;
+
+ reply->std_err = alloc_handle( current->process, process->console->active, GENERIC_WRITE, 0 );
+ if (!reply->std_err) goto error;
+
+ current->process->console = (struct console_input*)grab_object( process->console );
+ current->process->console->num_proc++;
+ }
+ else
+ {
+ set_error( STATUS_INVALID_HANDLE );
+ }
+
+ release_object( process );
+ return;
+
+error:
+ if (reply->std_in) close_handle( current->process, reply->std_in);
+ if (reply->std_out) close_handle( current->process, reply->std_out);
+ release_object( process );
+}
+
/* set info about a console input */
DECL_HANDLER(set_console_input_info)
{
diff --git a/server/protocol.def b/server/protocol.def
index 5d89c2b..c8bb3b1 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -1463,6 +1463,16 @@ struct console_renderer_event
@END
+/* Attach to a other process's console */
+@REQ(attach_console)
+ process_id_t pid; /* pid of attached console process */
+@REPLY
+ obj_handle_t std_in; /* attached stdin */
+ obj_handle_t std_out; /* attached stdout */
+ obj_handle_t std_err; /* attached stderr */
+@END
+
+
/* Get the input queue wait event */
@REQ(get_console_wait_event)
@REPLY
--
1.9.1

View File

@@ -1,2 +0,0 @@
Fixes: [41573] AttachConsole implementation.
Fixes: [43910] "Battle.net helper.exe" [NOT BLIZZARD APP!] crashes with Win 7 or higher

View File

@@ -1,4 +1,4 @@
From ca172d5f44df90a62426572ef6f461b27bf57689 Mon Sep 17 00:00:00 2001
From de4b7a3055065faed4cdc9ca253248eed5a3a7bb Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 15 Nov 2016 13:02:13 +0800
Subject: [PATCH] kernel32: MoveFile(source, source) should succeed.
@@ -11,7 +11,7 @@ Subject: [PATCH] kernel32: MoveFile(source, source) should succeed.
4 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c
index bde58e9..c7c5cbd 100644
index bde58e9dc4..c7c5cbd3f7 100644
--- a/dlls/kernel32/path.c
+++ b/dlls/kernel32/path.c
@@ -1354,7 +1354,7 @@ BOOL WINAPI MoveFileWithProgressW( LPCWSTR source, LPCWSTR dest,
@@ -59,7 +59,7 @@ index bde58e9..c7c5cbd 100644
RtlFreeAnsiString( &dest_unix );
return FALSE;
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index ef4eebc..07b3ffb 100644
index ef4eebc31c..07b3ffb77b 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -1886,7 +1886,7 @@ static void test_MoveFileA(void)
@@ -72,7 +72,7 @@ index ef4eebc..07b3ffb 100644
ret = MoveFileA(source, dest);
ok(!ret && GetLastError() == ERROR_ALREADY_EXISTS,
diff --git a/dlls/msvcp120/tests/msvcp120.c b/dlls/msvcp120/tests/msvcp120.c
index db9517d..7275e28 100644
index d7b82a3aae..5141622d6a 100644
--- a/dlls/msvcp120/tests/msvcp120.c
+++ b/dlls/msvcp120/tests/msvcp120.c
@@ -1524,7 +1524,7 @@ static void test_tr2_sys__Rename(void)
@@ -85,7 +85,7 @@ index db9517d..7275e28 100644
errno = 0xdeadbeef;
if(tests[i].val == ERROR_SUCCESS) {
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp
index ea4157c..298c4e9 100644
index ea4157c09d..298c4e9a9e 100644
--- a/programs/cmd/tests/test_builtins.cmd.exp
+++ b/programs/cmd/tests/test_builtins.cmd.exp
@@ -1295,8 +1295,8 @@ file move succeeded
@@ -100,5 +100,5 @@ index ea4157c..298c4e9 100644
simple directory move succeeded
moving a directory to itself gives error; errlevel 1
--
1.9.1
2.18.0

View File

@@ -1,16 +1,16 @@
From 6e5c9277d35def4b312820f11ef8a7586f788124 Mon Sep 17 00:00:00 2001
From 8031fda3ffc4d2469524f21198ef0aaf9725562e Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 15 Nov 2016 13:32:42 +0800
Subject: [PATCH] kernel32: MoveFile should make sure that it has the delete
access to the source file.
---
dlls/kernel32/path.c | 6 ++++--
dlls/kernel32/path.c | 4 ++--
dlls/kernel32/tests/file.c | 20 ++++++++------------
2 files changed, 12 insertions(+), 14 deletions(-)
2 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c
index c7c5cbd..855330b 100644
index c7c5cbd3f7..5388586094 100644
--- a/dlls/kernel32/path.c
+++ b/dlls/kernel32/path.c
@@ -1383,7 +1383,8 @@ BOOL WINAPI MoveFileWithProgressW( LPCWSTR source, LPCWSTR dest,
@@ -23,18 +23,16 @@ index c7c5cbd..855330b 100644
if (status == STATUS_SUCCESS)
status = wine_nt_to_unix_file_name( &nt_name, &source_unix, FILE_OPEN, FALSE );
RtlFreeUnicodeString( &nt_name );
@@ -1411,7 +1412,8 @@ BOOL WINAPI MoveFileWithProgressW( LPCWSTR source, LPCWSTR dest,
@@ -1407,7 +1408,6 @@ BOOL WINAPI MoveFileWithProgressW( LPCWSTR source, LPCWSTR dest,
SetLastError( ERROR_PATH_NOT_FOUND );
goto error;
}
-
options = FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT;
if (flag & MOVEFILE_WRITE_THROUGH)
options |= FILE_WRITE_THROUGH;
- status = NtOpenFile( &dest_handle, GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE, &attr, &io, 0, options );
+ status = NtOpenFile( &dest_handle, GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE, &attr, &io,
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, options );
if (status == STATUS_SUCCESS) /* destination exists */
{
if (!(flag & MOVEFILE_REPLACE_EXISTING))
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 07b3ffb..4729e75 100644
index 07b3ffb77b..4729e75728 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -1906,12 +1906,10 @@ static void test_MoveFileA(void)
@@ -72,5 +70,5 @@ index 07b3ffb..4729e75 100644
CloseHandle(hmapfile);
CloseHandle(hfile);
--
1.9.1
2.18.0

View File

@@ -34,7 +34,7 @@ index e242cb4c0f..fa0ca2da00 100644
+ ov.hEvent = CreateEventA(NULL, TRUE, FALSE, NULL);
+ ok(ov.hEvent != INVALID_HANDLE_VALUE, "CreateEvent failed, error %u\n", GetLastError());
+
+ status = create_pipe(&pipe, FILE_SHARE_READ | FILE_SHARE_WRITE, 0 /* OVERLAPPED */);
+ status = create_pipe(&pipe, FILE_SHARE_READ | FILE_SHARE_WRITE, 0 /* OVERLAPPED */, 0);
+ ok(!status, "NtCreateNamedPipeFile returned %x\n", status);
+ status = listen_pipe(pipe, ov.hEvent, &iosb, FALSE);
+ ok(status == STATUS_PENDING, "NtFsControlFile returned %x\n", status);

View File

@@ -1,141 +0,0 @@
From 4944b0ed67011898a68fb244bdd947a15ef1c8ab Mon Sep 17 00:00:00 2001
From: Michael Stefaniuc <mstefani@winehq.org>
Date: Wed, 18 Jul 2018 18:37:52 +0200
Subject: [PATCH] windowscodecs: Use the ARRAY_SIZE() macro
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
---
dlls/windowscodecs/bitmap.c | 2 +-
dlls/windowscodecs/bmpencode.c | 2 +-
dlls/windowscodecs/jpegformat.c | 2 +-
dlls/windowscodecs/metadataquery.c | 10 +++++-----
dlls/windowscodecs/pngformat.c | 4 ++--
dlls/windowscodecs/tiffformat.c | 2 +-
6 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/dlls/windowscodecs/bitmap.c b/dlls/windowscodecs/bitmap.c
index f8414962f2..116fd3134a 100644
--- a/dlls/windowscodecs/bitmap.c
+++ b/dlls/windowscodecs/bitmap.c
@@ -555,7 +555,7 @@ static HRESULT WINAPI IMILBitmapImpl_GetPixelFormat(IMILBitmapSource *iface,
*format = 0;
- for (i = 0; i < sizeof(pixel_fmt_map)/sizeof(pixel_fmt_map[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(pixel_fmt_map); i++)
{
if (IsEqualGUID(pixel_fmt_map[i].WIC_format, &This->pixelformat))
{
diff --git a/dlls/windowscodecs/bmpencode.c b/dlls/windowscodecs/bmpencode.c
index 97f30d7197..aa65675a98 100644
--- a/dlls/windowscodecs/bmpencode.c
+++ b/dlls/windowscodecs/bmpencode.c
@@ -529,7 +529,7 @@ static HRESULT WINAPI BmpEncoder_CreateNewFrame(IWICBitmapEncoder *iface,
if (ppIEncoderOptions)
{
- hr = CreatePropertyBag2(opts, sizeof(opts)/sizeof(opts[0]), ppIEncoderOptions);
+ hr = CreatePropertyBag2(opts, ARRAY_SIZE(opts), ppIEncoderOptions);
if (FAILED(hr)) return hr;
}
diff --git a/dlls/windowscodecs/jpegformat.c b/dlls/windowscodecs/jpegformat.c
index f05663f070..d24af6dc9e 100644
--- a/dlls/windowscodecs/jpegformat.c
+++ b/dlls/windowscodecs/jpegformat.c
@@ -1463,7 +1463,7 @@ static HRESULT WINAPI JpegEncoder_CreateNewFrame(IWICBitmapEncoder *iface,
if (ppIEncoderOptions)
{
- hr = CreatePropertyBag2(opts, sizeof(opts)/sizeof(opts[0]), ppIEncoderOptions);
+ hr = CreatePropertyBag2(opts, ARRAY_SIZE(opts), ppIEncoderOptions);
if (FAILED(hr))
{
LeaveCriticalSection(&This->lock);
diff --git a/dlls/windowscodecs/metadataquery.c b/dlls/windowscodecs/metadataquery.c
index e33884881b..2d7c918921 100644
--- a/dlls/windowscodecs/metadataquery.c
+++ b/dlls/windowscodecs/metadataquery.c
@@ -164,7 +164,7 @@ static VARTYPE map_type(struct string_t *str)
{
UINT i;
- for (i = 0; i < sizeof(str2vt)/sizeof(str2vt[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(str2vt); i++)
{
if (str2vt[i].len == str->len)
{
@@ -743,7 +743,7 @@ HRESULT WINAPI WICMapGuidToShortName(REFGUID guid, UINT len, WCHAR *name, UINT *
if (!guid) return E_INVALIDARG;
- for (i = 0; i < sizeof(guid2name)/sizeof(guid2name[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(guid2name); i++)
{
if (IsEqualGUID(guid, guid2name[i].guid))
{
@@ -774,7 +774,7 @@ HRESULT WINAPI WICMapShortNameToGuid(PCWSTR name, GUID *guid)
if (!name || !guid) return E_INVALIDARG;
- for (i = 0; i < sizeof(guid2name)/sizeof(guid2name[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(guid2name); i++)
{
if (!lstrcmpiW(name, guid2name[i].name))
{
@@ -884,7 +884,7 @@ static const WCHAR *map_shortname_to_schema(const GUID *format, const WCHAR *nam
!IsEqualGUID(format, &GUID_MetadataFormatXMPStruct))
return NULL;
- for (i = 0; i < sizeof(name2schema)/sizeof(name2schema[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(name2schema); i++)
{
if (!lstrcmpW(name2schema[i].name, name))
return name2schema[i].schema;
@@ -909,7 +909,7 @@ HRESULT WINAPI WICMapSchemaToName(REFGUID format, LPWSTR schema, UINT len, WCHAR
!IsEqualGUID(format, &GUID_MetadataFormatXMPStruct))
return WINCODEC_ERR_PROPERTYNOTFOUND;
- for (i = 0; i < sizeof(name2schema)/sizeof(name2schema[0]); i++)
+ for (i = 0; i < ARRAY_SIZE(name2schema); i++)
{
if (!lstrcmpW(name2schema[i].schema, schema))
{
diff --git a/dlls/windowscodecs/pngformat.c b/dlls/windowscodecs/pngformat.c
index fd0d197bb3..6b13112130 100644
--- a/dlls/windowscodecs/pngformat.c
+++ b/dlls/windowscodecs/pngformat.c
@@ -1441,7 +1441,7 @@ static HRESULT WINAPI PngFrameEncode_Initialize(IWICBitmapFrameEncode *iface,
if (pIEncoderOptions)
{
- hr = IPropertyBag2_Read(pIEncoderOptions, sizeof(opts)/sizeof(opts[0]), opts, NULL, opt_values, opt_hres);
+ hr = IPropertyBag2_Read(pIEncoderOptions, ARRAY_SIZE(opts), opts, NULL, opt_values, opt_hres);
if (FAILED(hr))
return hr;
@@ -2046,7 +2046,7 @@ static HRESULT WINAPI PngEncoder_CreateNewFrame(IWICBitmapEncoder *iface,
if (ppIEncoderOptions)
{
- hr = CreatePropertyBag2(opts, sizeof(opts)/sizeof(opts[0]), ppIEncoderOptions);
+ hr = CreatePropertyBag2(opts, ARRAY_SIZE(opts), ppIEncoderOptions);
if (FAILED(hr))
{
LeaveCriticalSection(&This->lock);
diff --git a/dlls/windowscodecs/tiffformat.c b/dlls/windowscodecs/tiffformat.c
index 2b2f84f859..966ab3eb4b 100644
--- a/dlls/windowscodecs/tiffformat.c
+++ b/dlls/windowscodecs/tiffformat.c
@@ -1956,7 +1956,7 @@ static HRESULT WINAPI TiffEncoder_CreateNewFrame(IWICBitmapEncoder *iface,
if (ppIEncoderOptions && SUCCEEDED(hr))
{
- hr = CreatePropertyBag2(opts, sizeof(opts)/sizeof(opts[0]), ppIEncoderOptions);
+ hr = CreatePropertyBag2(opts, ARRAY_SIZE(opts), ppIEncoderOptions);
if (SUCCEEDED(hr))
{
VARIANT v;
--
2.14.4

Some files were not shown because too many files have changed in this diff Show More