Rebase against bd2999db92e63f3aa8b48945503c616c28726842.

[dwmapi-DwmSetWindowAttribute]
Removed patch to fake success in dwmapi.DwmSetWindowAttribute function
(accepted upstream).

[ntdll-NtSetLdtEntries]
Partially removed patch to implement ntdll.NtSetLdtEntries (accepted upstream).

[shell32-UNIXFS_get_unix_path]
Removed patch to check IsWoW64Process before calling Wow64 functions in
UNIXFS_get_unix_path (fixed upstream).
This commit is contained in:
Sebastian Lackner 2016-05-02 20:34:01 +02:00
parent 07d872e2bc
commit 8e5acbdae3
18 changed files with 113 additions and 359 deletions

View File

@ -1,25 +0,0 @@
From 12fa52d23ad77d08100444fd04b9deaf06b5ac63 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 18 Mar 2016 04:25:59 +0100
Subject: dwmapi: Return S_OK from DwmSetWindowAttribute function.
---
dlls/dwmapi/dwmapi_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/dwmapi/dwmapi_main.c b/dlls/dwmapi/dwmapi_main.c
index a776cfe..7ae2dcf 100644
--- a/dlls/dwmapi/dwmapi_main.c
+++ b/dlls/dwmapi/dwmapi_main.c
@@ -126,7 +126,7 @@ HRESULT WINAPI DwmSetWindowAttribute(HWND hwnd, DWORD attributenum, LPCVOID attr
if (!once++) FIXME("(%p, %x, %p, %x) stub\n", hwnd, attributenum, attribute, size);
- return E_NOTIMPL;
+ return S_OK;
}
/**********************************************************************
--
2.7.1

View File

@ -1 +0,0 @@
Fixes: Fake success in dwmapi.DwmSetWindowAttribute function

View File

@ -1,4 +1,4 @@
From 3c92859cfaa24d7f873d7bd818c26832b856a356 Mon Sep 17 00:00:00 2001
From 27f64eefe26b79cf7f0a0c6bc640509f759aad91 Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Thu, 22 Oct 2015 15:54:30 +0800
Subject: ntdll: Implement FileNamesInformation class support.
@ -8,7 +8,7 @@ Subject: ntdll: Implement FileNamesInformation class support.
1 file changed, 9 insertions(+)
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
index 41e7115..f0e0703 100644
index f7fa951..30e7d1d 100644
--- a/dlls/ntdll/directory.c
+++ b/dlls/ntdll/directory.c
@@ -178,6 +178,7 @@ union file_directory_info
@ -18,8 +18,8 @@ index 41e7115..f0e0703 100644
+ FILE_NAMES_INFORMATION names;
};
static BOOL show_dot_files;
@@ -260,6 +261,8 @@ static inline unsigned int dir_info_size( FILE_INFORMATION_CLASS class, unsigned
struct dir_data
@@ -271,6 +272,8 @@ static inline unsigned int dir_info_size( FILE_INFORMATION_CLASS class, unsigned
return (FIELD_OFFSET( FILE_ID_BOTH_DIRECTORY_INFORMATION, FileName[len] ) + 7) & ~7;
case FileIdFullDirectoryInformation:
return (FIELD_OFFSET( FILE_ID_FULL_DIRECTORY_INFORMATION, FileName[len] ) + 7) & ~7;
@ -28,7 +28,7 @@ index 41e7115..f0e0703 100644
default:
assert(0);
return 0;
@@ -1485,6 +1488,11 @@ static union file_directory_info *append_entry( void *info_ptr, IO_STATUS_BLOCK
@@ -1506,6 +1509,11 @@ static union file_directory_info *append_entry( struct dir_data *dir_data, void
filename = info->id_both.FileName;
break;
@ -40,7 +40,7 @@ index 41e7115..f0e0703 100644
default:
assert(0);
return NULL;
@@ -2244,6 +2252,7 @@ NTSTATUS WINAPI NtQueryDirectoryFile( HANDLE handle, HANDLE event,
@@ -2356,6 +2364,7 @@ NTSTATUS WINAPI NtQueryDirectoryFile( HANDLE handle, HANDLE event,
case FileFullDirectoryInformation:
case FileIdBothDirectoryInformation:
case FileIdFullDirectoryInformation:

View File

@ -1,82 +0,0 @@
From 15201062dd669c30343f7d1a1157c254943267ea Mon Sep 17 00:00:00 2001
From: Austin English <austinenglish@gmail.com>
Date: Wed, 19 Feb 2014 12:54:00 -0800
Subject: ntdll: add NtSetLdtEntries/ZwSetLdtEntries stub (try 2)
---
dlls/ntdll/nt.c | 12 ++++++++++++
dlls/ntdll/ntdll.spec | 4 ++--
include/ddk/wdm.h | 1 +
include/winternl.h | 2 +-
4 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 73d9383..0d11037 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -2446,3 +2446,15 @@ NTSTATUS WINAPI NtSystemDebugControl(SYSDBG_COMMAND command, PVOID inbuffer, ULO
return STATUS_NOT_IMPLEMENTED;
}
+
+/******************************************************************************
+ * NtSetLdtEntries (NTDLL.@)
+ * ZwSetLdtEntries (NTDLL.@)
+ */
+NTSTATUS WINAPI NtSetLdtEntries(ULONG selector1, ULONG entry1_low, ULONG entry1_high,
+ ULONG selector2, ULONG entry2_low, ULONG entry2_high)
+{
+ FIXME("(%u, %u, %u, %u, %u, %u): stub\n", selector1, entry1_low, entry1_high, selector2, entry2_low, entry2_high);
+
+ return STATUS_NOT_IMPLEMENTED;
+}
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 5bac269..f1dafc8 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -332,7 +332,7 @@
@ stdcall NtSetInformationToken(long long ptr long)
@ stdcall NtSetIntervalProfile(long long)
@ stdcall NtSetIoCompletion(ptr long ptr long long)
-@ stub NtSetLdtEntries
+@ stdcall NtSetLdtEntries(long long long long long long)
@ stub NtSetLowEventPair
@ stub NtSetLowWaitHighEventPair
@ stub NtSetLowWaitHighThread
@@ -1209,7 +1209,7 @@
@ stdcall ZwSetInformationToken(long long ptr long) NtSetInformationToken
@ stdcall ZwSetIntervalProfile(long long) NtSetIntervalProfile
@ stdcall ZwSetIoCompletion(ptr long ptr long long) NtSetIoCompletion
-@ stub ZwSetLdtEntries
+@ stdcall ZwSetLdtEntries(long long long long long long) NtSetLdtEntries
@ stub ZwSetLowEventPair
@ stub ZwSetLowWaitHighEventPair
@ stub ZwSetLowWaitHighThread
diff --git a/include/ddk/wdm.h b/include/ddk/wdm.h
index 29b24e7..ef4fa80 100644
--- a/include/ddk/wdm.h
+++ b/include/ddk/wdm.h
@@ -1333,6 +1333,7 @@ NTSTATUS WINAPI ZwSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID,
NTSTATUS WINAPI ZwSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG);
NTSTATUS WINAPI ZwSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG);
NTSTATUS WINAPI ZwSetIoCompletion(HANDLE,ULONG,ULONG,NTSTATUS,ULONG);
+NTSTATUS WINAPI ZwSetLdtEntries(ULONG,ULONG,ULONG,ULONG,ULONG,ULONG);
NTSTATUS WINAPI ZwSetSecurityObject(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
NTSTATUS WINAPI ZwSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG);
NTSTATUS WINAPI ZwSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*);
diff --git a/include/winternl.h b/include/winternl.h
index 5a27f94..ddc7c18 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2228,7 +2228,7 @@ NTSYSAPI NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,
NTSYSAPI NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG);
NTSYSAPI NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE);
NTSYSAPI NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,SIZE_T);
-NTSYSAPI NTSTATUS WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY);
+NTSYSAPI NTSTATUS WINAPI NtSetLdtEntries(ULONG,ULONG,ULONG,ULONG,ULONG,ULONG);
NTSYSAPI NTSTATUS WINAPI NtSetLowEventPair(HANDLE);
NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighEventPair(HANDLE);
NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighThread(VOID);
--
2.1.3

View File

@ -1,24 +0,0 @@
From 211c1988706a03296da84d5b2607de3ec9e5ca68 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 29 Apr 2016 17:11:26 +0200
Subject: ntdll: Initialize Reserved_0 bit in NtQueryInformationThread.
---
dlls/ntdll/thread.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 40747d7..f6a5fbe 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -1045,6 +1045,7 @@ NTSTATUS WINAPI NtQueryInformationThread( HANDLE handle, THREADINFOCLASS class,
tdi->Entry.HighWord.Bits.Granularity = 1;
tdi->Entry.HighWord.Bits.Default_Big = 1;
tdi->Entry.HighWord.Bits.Type = 0x12;
+ tdi->Entry.HighWord.Bits.Reserved_0 = 0;
/* it has to be one of the system GDT selectors */
if (sel != (wine_get_ds() & ~3) && sel != (wine_get_ss() & ~3))
{
--
2.8.0

View File

@ -1,2 +0,0 @@
Fixes: [26268] Add stub for NtSetLdtEntries/ZwSetLdtEntries
Category: stable

View File

@ -51,13 +51,13 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "5e6f35ffbd8795da71c6fd6cb8adc84bf8a36504"
echo "bd2999db92e63f3aa8b48945503c616c28726842"
}
# Show version information
version()
{
echo "Wine Staging 1.9.9"
echo "Wine Staging 1.9.10 (unreleased)"
echo "Copyright (C) 2014-2016 the Wine Staging project authors."
echo ""
echo "Patchset to be applied on upstream Wine:"
@ -137,7 +137,6 @@ patch_enable_all ()
enable_dsound_EAX="$1"
enable_dsound_Fast_Mixer="$1"
enable_dsound_Revert_Cleanup="$1"
enable_dwmapi_DwmSetWindowAttribute="$1"
enable_dxdiagn_Display_Information="$1"
enable_dxdiagn_Enumerate_DirectSound="$1"
enable_dxdiagn_GetChildContainer_Leaf_Nodes="$1"
@ -312,7 +311,6 @@ patch_enable_all ()
enable_shell32_SHFileOperation_Move="$1"
enable_shell32_SHFileOperation_Win9x="$1"
enable_shell32_Toolbar_Bitmaps="$1"
enable_shell32_UNIXFS_get_unix_path="$1"
enable_shell32_UnixFS="$1"
enable_shlwapi_AssocGetPerceivedType="$1"
enable_shlwapi_SHMapHandle="$1"
@ -581,9 +579,6 @@ patch_enable ()
dsound-Revert_Cleanup)
enable_dsound_Revert_Cleanup="$2"
;;
dwmapi-DwmSetWindowAttribute)
enable_dwmapi_DwmSetWindowAttribute="$2"
;;
dxdiagn-Display_Information)
enable_dxdiagn_Display_Information="$2"
;;
@ -1106,9 +1101,6 @@ patch_enable ()
shell32-Toolbar_Bitmaps)
enable_shell32_Toolbar_Bitmaps="$2"
;;
shell32-UNIXFS_get_unix_path)
enable_shell32_UNIXFS_get_unix_path="$2"
;;
shell32-UnixFS)
enable_shell32_UnixFS="$2"
;;
@ -1813,9 +1805,6 @@ if test "$enable_category_stable" -eq 1; then
if test "$enable_ntdll_Heap_FreeLists" -gt 1; then
abort "Patchset ntdll-Heap_FreeLists disabled, but category-stable depends on that."
fi
if test "$enable_ntdll_NtSetLdtEntries" -gt 1; then
abort "Patchset ntdll-NtSetLdtEntries disabled, but category-stable depends on that."
fi
if test "$enable_ntdll_Pipe_SpecialCharacters" -gt 1; then
abort "Patchset ntdll-Pipe_SpecialCharacters disabled, but category-stable depends on that."
fi
@ -1925,7 +1914,6 @@ if test "$enable_category_stable" -eq 1; then
enable_ntdll_Fix_Alignment=1
enable_ntdll_FreeBSD_Directory=1
enable_ntdll_Heap_FreeLists=1
enable_ntdll_NtSetLdtEntries=1
enable_ntdll_Pipe_SpecialCharacters=1
enable_ntdll_RtlIpStringToAddress_Tests=1
enable_ntdll_Threading=1
@ -3425,18 +3413,6 @@ if test "$enable_dsound_EAX" -eq 1; then
) >> "$patchlist"
fi
# Patchset dwmapi-DwmSetWindowAttribute
# |
# | Modified files:
# | * dlls/dwmapi/dwmapi_main.c
# |
if test "$enable_dwmapi_DwmSetWindowAttribute" -eq 1; then
patch_apply dwmapi-DwmSetWindowAttribute/0001-dwmapi-Return-S_OK-from-DwmSetWindowAttribute-functi.patch
(
echo '+ { "Michael Müller", "dwmapi: Return S_OK from DwmSetWindowAttribute function.", 1 },';
) >> "$patchlist"
fi
# Patchset dxdiagn-Display_Information
# |
# | This patchset fixes the following Wine bugs:
@ -4889,21 +4865,13 @@ fi
# Patchset ntdll-NtSetLdtEntries
# |
# | This patchset fixes the following Wine bugs:
# | * [#26268] Add stub for NtSetLdtEntries/ZwSetLdtEntries
# |
# | Modified files:
# | * dlls/kernel32/tests/thread.c, dlls/ntdll/nt.c, dlls/ntdll/ntdll.spec, dlls/ntdll/thread.c, include/ddk/wdm.h,
# | include/winternl.h, libs/wine/ldt.c
# | * dlls/kernel32/tests/thread.c, dlls/ntdll/nt.c, libs/wine/ldt.c
# |
if test "$enable_ntdll_NtSetLdtEntries" -eq 1; then
patch_apply ntdll-NtSetLdtEntries/0001-ntdll-add-NtSetLdtEntries-ZwSetLdtEntries-stub-try-2.patch
patch_apply ntdll-NtSetLdtEntries/0002-ntdll-Initialize-Reserved_0-bit-in-NtQueryInformatio.patch
patch_apply ntdll-NtSetLdtEntries/0003-ntdll-Implement-NtSetLdtEntries.patch
patch_apply ntdll-NtSetLdtEntries/0004-libs-wine-Allow-to-modify-reserved-LDT-entries.patch
patch_apply ntdll-NtSetLdtEntries/0001-ntdll-Implement-NtSetLdtEntries.patch
patch_apply ntdll-NtSetLdtEntries/0002-libs-wine-Allow-to-modify-reserved-LDT-entries.patch
(
echo '+ { "Austin English", "ntdll: Add NtSetLdtEntries/ZwSetLdtEntries stub.", 2 },';
echo '+ { "Sebastian Lackner", "ntdll: Initialize Reserved_0 bit in NtQueryInformationThread.", 1 },';
echo '+ { "Dmitry Timoshkov", "ntdll: Implement NtSetLdtEntries.", 1 },';
echo '+ { "Dmitry Timoshkov", "libs/wine: Allow to modify reserved LDT entries.", 1 },';
) >> "$patchlist"
@ -6392,18 +6360,6 @@ if test "$enable_shell32_Toolbar_Bitmaps" -eq 1; then
) >> "$patchlist"
fi
# Patchset shell32-UNIXFS_get_unix_path
# |
# | Modified files:
# | * dlls/shell32/shfldr_unixfs.c
# |
if test "$enable_shell32_UNIXFS_get_unix_path" -eq 1; then
patch_apply shell32-UNIXFS_get_unix_path/0001-shell32-Check-IsWoW64Process-before-calling-Wow64-fu.patch
(
echo '+ { "Olivier F. R. Dierick", "shell32: Check IsWoW64Process before calling Wow64 functions.", 2 },';
) >> "$patchlist"
fi
# Patchset shell32-UnixFS
# |
# | Modified files:

View File

@ -1,4 +1,4 @@
From bb902548f15deec4dc9d9eaaf6e78b4cbdb01f87 Mon Sep 17 00:00:00 2001
From b46fe984533047235c49722a6e0d48960a487cdb Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 4 Dec 2015 10:36:47 +0100
Subject: server: Introduce a new alloc_handle object callback. (v2)
@ -74,15 +74,15 @@ index 3ff7540..7bebf13 100644
atom_table_destroy /* destroy */
};
diff --git a/server/change.c b/server/change.c
index 36a1997..6da2f63 100644
index 7c0ca99..753bf66 100644
--- a/server/change.c
+++ b/server/change.c
@@ -169,6 +169,7 @@ static const struct object_ops dir_ops =
@@ -172,6 +172,7 @@ static const struct object_ops dir_ops =
no_link_name, /* link_name */
NULL, /* unlink_name */
no_open_file, /* open_file */
+ no_alloc_handle, /* alloc_handle */
fd_close_handle, /* close_handle */
dir_close_handle, /* close_handle */
dir_destroy /* destroy */
};
diff --git a/server/clipboard.c b/server/clipboard.c
@ -98,7 +98,7 @@ index 7b92706..fa3aa51 100644
no_destroy /* destroy */
};
diff --git a/server/completion.c b/server/completion.c
index 759c6e2..bca0963 100644
index 8b8983a..72dbc5b 100644
--- a/server/completion.c
+++ b/server/completion.c
@@ -75,6 +75,7 @@ static const struct object_ops completion_ops =
@ -110,7 +110,7 @@ index 759c6e2..bca0963 100644
completion_destroy /* destroy */
};
diff --git a/server/console.c b/server/console.c
index 0d98b78..37e413c 100644
index 4d275f0..5575c9d 100644
--- a/server/console.c
+++ b/server/console.c
@@ -87,6 +87,7 @@ static const struct object_ops console_input_ops =
@ -158,7 +158,7 @@ index 2eb794a..a2c07ba 100644
debug_ctx_destroy /* destroy */
};
diff --git a/server/device.c b/server/device.c
index a8f6f5d..4fdf7ad 100644
index 22ade88..b949548 100644
--- a/server/device.c
+++ b/server/device.c
@@ -81,6 +81,7 @@ static const struct object_ops irp_call_ops =
@ -194,7 +194,7 @@ index a8f6f5d..4fdf7ad 100644
device_file_destroy /* destroy */
};
diff --git a/server/directory.c b/server/directory.c
index 45683b9..445c35c 100644
index 96555bb..26600f8 100644
--- a/server/directory.c
+++ b/server/directory.c
@@ -67,6 +67,7 @@ static const struct object_ops object_type_ops =
@ -214,7 +214,7 @@ index 45683b9..445c35c 100644
directory_destroy /* destroy */
};
diff --git a/server/event.c b/server/event.c
index c9a0ebb..36ea8fd 100644
index cfc0f6a..608fafb 100644
--- a/server/event.c
+++ b/server/event.c
@@ -68,6 +68,7 @@ static const struct object_ops event_ops =
@ -234,10 +234,10 @@ index c9a0ebb..36ea8fd 100644
no_destroy /* destroy */
};
diff --git a/server/fd.c b/server/fd.c
index 28f5346..c64132c 100644
index 17b1b66..3e0a62b 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -212,6 +212,7 @@ static const struct object_ops fd_ops =
@@ -217,6 +217,7 @@ static const struct object_ops fd_ops =
no_link_name, /* link_name */
NULL, /* unlink_name */
no_open_file, /* open_file */
@ -245,7 +245,7 @@ index 28f5346..c64132c 100644
no_close_handle, /* close_handle */
fd_destroy /* destroy */
};
@@ -251,6 +252,7 @@ static const struct object_ops device_ops =
@@ -256,6 +257,7 @@ static const struct object_ops device_ops =
no_link_name, /* link_name */
NULL, /* unlink_name */
no_open_file, /* open_file */
@ -253,7 +253,7 @@ index 28f5346..c64132c 100644
no_close_handle, /* close_handle */
device_destroy /* destroy */
};
@@ -289,6 +291,7 @@ static const struct object_ops inode_ops =
@@ -294,6 +296,7 @@ static const struct object_ops inode_ops =
no_link_name, /* link_name */
NULL, /* unlink_name */
no_open_file, /* open_file */
@ -261,7 +261,7 @@ index 28f5346..c64132c 100644
no_close_handle, /* close_handle */
inode_destroy /* destroy */
};
@@ -329,6 +332,7 @@ static const struct object_ops file_lock_ops =
@@ -334,6 +337,7 @@ static const struct object_ops file_lock_ops =
no_link_name, /* link_name */
NULL, /* unlink_name */
no_open_file, /* open_file */
@ -270,10 +270,10 @@ index 28f5346..c64132c 100644
no_destroy /* destroy */
};
diff --git a/server/file.c b/server/file.c
index 15fd411..e6f3fc2 100644
index dacb24a..fcf18e5 100644
--- a/server/file.c
+++ b/server/file.c
@@ -94,6 +94,7 @@ static const struct object_ops file_ops =
@@ -95,6 +95,7 @@ static const struct object_ops file_ops =
no_link_name, /* link_name */
NULL, /* unlink_name */
file_open_file, /* open_file */
@ -282,7 +282,7 @@ index 15fd411..e6f3fc2 100644
file_destroy /* destroy */
};
diff --git a/server/handle.c b/server/handle.c
index f440f9f..eb83a3b 100644
index 37fba69..a8fd228 100644
--- a/server/handle.c
+++ b/server/handle.c
@@ -133,6 +133,7 @@ static const struct object_ops handle_table_ops =
@ -339,7 +339,7 @@ index 3a0e4b4..dc653b8 100644
hook_table_destroy /* destroy */
};
diff --git a/server/mailslot.c b/server/mailslot.c
index a0fa6e2..bff0208 100644
index ea28825..a745a54 100644
--- a/server/mailslot.c
+++ b/server/mailslot.c
@@ -89,6 +89,7 @@ static const struct object_ops mailslot_ops =
@ -367,7 +367,7 @@ index a0fa6e2..bff0208 100644
mailslot_device_destroy /* destroy */
};
diff --git a/server/mapping.c b/server/mapping.c
index 4384cec..fc6404f 100644
index fe30450..a612766 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -94,6 +94,7 @@ static const struct object_ops mapping_ops =
@ -379,7 +379,7 @@ index 4384cec..fc6404f 100644
mapping_destroy /* destroy */
};
diff --git a/server/mutex.c b/server/mutex.c
index ca0da59..3598ac9 100644
index 3693095..e96bfd0 100644
--- a/server/mutex.c
+++ b/server/mutex.c
@@ -71,6 +71,7 @@ static const struct object_ops mutex_ops =
@ -391,7 +391,7 @@ index ca0da59..3598ac9 100644
mutex_destroy /* destroy */
};
diff --git a/server/named_pipe.c b/server/named_pipe.c
index 1e4169d..ade9165 100644
index 0661c12..eb0696e 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -135,6 +135,7 @@ static const struct object_ops named_pipe_ops =
@ -427,10 +427,10 @@ index 1e4169d..ade9165 100644
named_pipe_device_destroy /* destroy */
};
diff --git a/server/object.c b/server/object.c
index b8be122..8310067 100644
index ad22ec1..f5d7d9f 100644
--- a/server/object.c
+++ b/server/object.c
@@ -563,6 +563,10 @@ struct object *no_open_file( struct object *obj, unsigned int access, unsigned i
@@ -652,6 +652,10 @@ struct object *no_open_file( struct object *obj, unsigned int access, unsigned i
return NULL;
}
@ -442,10 +442,10 @@ index b8be122..8310067 100644
{
return 1; /* ok to close */
diff --git a/server/object.h b/server/object.h
index c4bc40b..16bf089 100644
index 687f730..f82fb67 100644
--- a/server/object.h
+++ b/server/object.h
@@ -90,8 +90,10 @@ struct object_ops
@@ -89,8 +89,10 @@ struct object_ops
/* open a file object to access this object */
struct object *(*open_file)(struct object *, unsigned int access, unsigned int sharing,
unsigned int options);
@ -457,7 +457,7 @@ index c4bc40b..16bf089 100644
/* destroy on refcount == 0 */
void (*destroy)(struct object *);
};
@@ -161,6 +163,7 @@ extern int no_link_name( struct object *obj, struct object_name *name, struct ob
@@ -163,6 +165,7 @@ extern int no_link_name( struct object *obj, struct object_name *name, struct ob
extern void default_unlink_name( struct object *obj, struct object_name *name );
extern struct object *no_open_file( struct object *obj, unsigned int access, unsigned int sharing,
unsigned int options );
@ -466,7 +466,7 @@ index c4bc40b..16bf089 100644
extern void no_destroy( struct object *obj );
#ifdef DEBUG_OBJECTS
diff --git a/server/process.c b/server/process.c
index c9bcabb..cc9c01c 100644
index 48ada99..8334eaa 100644
--- a/server/process.c
+++ b/server/process.c
@@ -84,6 +84,7 @@ static const struct object_ops process_ops =
@ -514,10 +514,10 @@ index f82060f..e097f5b 100644
thread_input_destroy /* destroy */
};
diff --git a/server/registry.c b/server/registry.c
index 5ca2a52..e38d6bb 100644
index 97b16ed..6a38de7 100644
--- a/server/registry.c
+++ b/server/registry.c
@@ -169,6 +169,7 @@ static const struct object_ops key_ops =
@@ -170,6 +170,7 @@ static const struct object_ops key_ops =
no_link_name, /* link_name */
NULL, /* unlink_name */
no_open_file, /* open_file */
@ -526,7 +526,7 @@ index 5ca2a52..e38d6bb 100644
key_destroy /* destroy */
};
diff --git a/server/request.c b/server/request.c
index dfa4485..122de96 100644
index 597bf88..7d88202 100644
--- a/server/request.c
+++ b/server/request.c
@@ -107,6 +107,7 @@ static const struct object_ops master_socket_ops =
@ -538,7 +538,7 @@ index dfa4485..122de96 100644
master_socket_destroy /* destroy */
};
diff --git a/server/semaphore.c b/server/semaphore.c
index c77bd58..9c06ce4 100644
index 08ff153..15e7392 100644
--- a/server/semaphore.c
+++ b/server/semaphore.c
@@ -68,6 +68,7 @@ static const struct object_ops semaphore_ops =
@ -574,7 +574,7 @@ index c20e154..8c05c5f 100644
handler_destroy /* destroy */
};
diff --git a/server/snapshot.c b/server/snapshot.c
index 3566b89..a0cf32e 100644
index e35588a..6e788ab 100644
--- a/server/snapshot.c
+++ b/server/snapshot.c
@@ -71,6 +71,7 @@ static const struct object_ops snapshot_ops =
@ -606,7 +606,7 @@ index dc10d2a..a11964f 100644
ifchange_destroy /* destroy */
};
diff --git a/server/symlink.c b/server/symlink.c
index bd09d34..6607e47 100644
index e176267..034ecdd 100644
--- a/server/symlink.c
+++ b/server/symlink.c
@@ -70,6 +70,7 @@ static const struct object_ops symlink_ops =
@ -618,7 +618,7 @@ index bd09d34..6607e47 100644
symlink_destroy /* destroy */
};
diff --git a/server/thread.c b/server/thread.c
index ca02a8a..71b4d7b 100644
index 5f8405b..4069af3 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -120,6 +120,7 @@ static const struct object_ops thread_apc_ops =
@ -638,7 +638,7 @@ index ca02a8a..71b4d7b 100644
destroy_thread /* destroy */
};
diff --git a/server/timer.c b/server/timer.c
index 0d81d90..966d65d 100644
index c8b4fa8..23c613b 100644
--- a/server/timer.c
+++ b/server/timer.c
@@ -75,6 +75,7 @@ static const struct object_ops timer_ops =
@ -662,10 +662,10 @@ index ca12813..e13d03a 100644
token_destroy /* destroy */
};
diff --git a/server/winstation.c b/server/winstation.c
index 9dc348d..17c312a 100644
index a0be058..5f96be8 100644
--- a/server/winstation.c
+++ b/server/winstation.c
@@ -73,6 +73,7 @@ static const struct object_ops winstation_ops =
@@ -75,6 +75,7 @@ static const struct object_ops winstation_ops =
directory_link_name, /* link_name */
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
@ -673,7 +673,7 @@ index 9dc348d..17c312a 100644
winstation_close_handle, /* close_handle */
winstation_destroy /* destroy */
};
@@ -96,6 +97,7 @@ static const struct object_ops desktop_ops =
@@ -98,6 +99,7 @@ static const struct object_ops desktop_ops =
desktop_link_name, /* link_name */
default_unlink_name, /* unlink_name */
no_open_file, /* open_file */
@ -682,5 +682,5 @@ index 9dc348d..17c312a 100644
desktop_destroy /* destroy */
};
--
2.7.0
2.8.0

View File

@ -1,4 +1,4 @@
From 56de1a9701fb2e09ca956692f19aed26b71c34d3 Mon Sep 17 00:00:00 2001
From 0ece6430725c5339252c9d2a636ccbc95d69196b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 19 Mar 2015 01:22:34 +0100
Subject: server: Implement support for global and local shared memory blocks
@ -114,10 +114,10 @@ index 356d631..a91e478 100644
ntdll_get_thread_data()->wow64_redir = is_wow64;
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 08275dd..ce19a34 100644
index e38bbc2..6a574f7 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -376,6 +376,7 @@ void terminate_thread( int status )
@@ -380,6 +380,7 @@ void terminate_thread( int status )
void exit_thread( int status )
{
static void *prev_teb;
@ -125,7 +125,7 @@ index 08275dd..ce19a34 100644
sigset_t sigset;
TEB *teb;
@@ -399,6 +400,9 @@ void exit_thread( int status )
@@ -403,6 +404,9 @@ void exit_thread( int status )
LdrShutdownThread();
RtlFreeThreadActivationContextStack();
@ -158,7 +158,7 @@ index d573d1f..695389a 100644
/* macros for server requests */
diff --git a/include/winternl.h b/include/winternl.h
index 9b40fd4..2270a40 100644
index 0e6cd4b..03f026b 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -366,7 +366,7 @@ typedef struct _TEB
@ -171,10 +171,10 @@ index 9b40fd4..2270a40 100644
ULONG ImpersonationLocale; /* f98/1788 */
ULONG IsImpersonating; /* f9c/178c */
diff --git a/server/fd.c b/server/fd.c
index e995380..362f6c8 100644
index 17b1b66..f17b473 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -2474,6 +2474,33 @@ DECL_HANDLER(write)
@@ -2479,6 +2479,33 @@ DECL_HANDLER(write)
}
}
@ -341,7 +341,7 @@ index fe30450..40a1f21 100644
static int create_temp_file( file_pos_t size )
{
diff --git a/server/protocol.def b/server/protocol.def
index a5a45eb..7c61b76 100644
index 35b14f2..35aa25e 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -69,6 +69,15 @@ struct request_max_size
@ -360,8 +360,8 @@ index a5a45eb..7c61b76 100644
/* debug event data */
typedef union
@@ -1200,6 +1209,12 @@ enum server_fd_type
};
@@ -1209,6 +1218,12 @@ enum server_fd_type
@END
+/* Get file descriptor for shared memory */
@ -374,7 +374,7 @@ index a5a45eb..7c61b76 100644
@REQ(flush)
int blocking; /* whether it's a blocking flush */
diff --git a/server/thread.c b/server/thread.c
index 494db39..fbbd05a 100644
index e82207a..0d0bf28 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -200,6 +200,8 @@ static inline void init_thread_structure( struct thread *thread )
@ -419,5 +419,5 @@ index ac9af24..59ef250 100644
struct thread_snapshot
--
2.7.1
2.8.0

View File

@ -1,4 +1,4 @@
From eb62198f629e008a4f24c0aaf05cc61d413685d6 Mon Sep 17 00:00:00 2001
From 3b870c439904eef2623f7d027213e66dc99822f0 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 30 Mar 2015 12:50:21 +0200
Subject: server: Temporarily store the full security descriptor for file
@ -12,10 +12,10 @@ Subject: server: Temporarily store the full security descriptor for file
4 files changed, 74 insertions(+), 41 deletions(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index f34831d..b149ea4 100644
index 059f798..0bf7228 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -3350,7 +3350,6 @@ static void test_CreateDirectoryA(void)
@@ -3540,7 +3540,6 @@ static void test_CreateDirectoryA(void)
ok(error == ERROR_SUCCESS, "GetNamedSecurityInfo failed with error %d\n", error);
bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation);
ok(bret, "GetAclInformation failed\n");
@ -23,7 +23,7 @@ index f34831d..b149ea4 100644
ok(acl_size.AceCount == 0, "GetAclInformation returned unexpected entry count (%d != 0).\n",
acl_size.AceCount);
LocalFree(pSD);
@@ -3426,7 +3425,6 @@ static void test_CreateDirectoryA(void)
@@ -3616,7 +3615,6 @@ static void test_CreateDirectoryA(void)
ok(error == ERROR_SUCCESS, "GetNamedSecurityInfo failed with error %d\n", error);
bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation);
ok(bret, "GetAclInformation failed\n");
@ -31,7 +31,7 @@ index f34831d..b149ea4 100644
ok(acl_size.AceCount == 0, "GetAclInformation returned unexpected entry count (%d != 0).\n",
acl_size.AceCount);
LocalFree(pSD);
@@ -3572,7 +3570,6 @@ static void test_CreateDirectoryA(void)
@@ -3762,7 +3760,6 @@ static void test_CreateDirectoryA(void)
ok(error == ERROR_SUCCESS, "GetNamedSecurityInfo failed with error %d\n", error);
bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation);
ok(bret, "GetAclInformation failed\n");
@ -39,7 +39,7 @@ index f34831d..b149ea4 100644
ok(acl_size.AceCount == 0, "GetAclInformation returned unexpected entry count (%d != 0).\n",
acl_size.AceCount);
LocalFree(pSD);
@@ -4552,23 +4549,22 @@ static void test_GetSecurityInfo(void)
@@ -4742,23 +4739,22 @@ static void test_GetSecurityInfo(void)
bret = pGetAce(pDacl, 0, (VOID **)&ace);
ok(bret, "Failed to get Current User ACE.\n");
bret = EqualSid(&ace->SidStart, user_sid);
@ -70,10 +70,10 @@ index f34831d..b149ea4 100644
LocalFree(pSD);
CloseHandle(obj);
diff --git a/server/change.c b/server/change.c
index 3d5bae0..4c663c3 100644
index 66ac1d6..a6ed1c6 100644
--- a/server/change.c
+++ b/server/change.c
@@ -1032,7 +1032,8 @@ static int dir_add_to_existing_notify( struct dir *dir )
@@ -1125,7 +1125,8 @@ static int dir_add_to_existing_notify( struct dir *dir )
#endif /* USE_INOTIFY */
@ -83,8 +83,8 @@ index 3d5bae0..4c663c3 100644
{
struct dir *dir;
@@ -1051,6 +1052,11 @@ struct object *create_dir_obj( struct fd *fd, unsigned int access, mode_t mode )
dir->uid = ~(uid_t)0;
@@ -1145,6 +1146,11 @@ struct object *create_dir_obj( struct fd *fd, unsigned int access, mode_t mode )
dir->client_process = NULL;
set_fd_user( fd, &dir_fd_ops, &dir->obj );
+ if (sd) dir_set_sd( &dir->obj, sd, OWNER_SECURITY_INFORMATION |
@ -241,10 +241,10 @@ index 81a7496..be98fa1 100644
}
if (root_fd) release_object( root_fd );
diff --git a/server/file.h b/server/file.h
index b9e27e2..3274c5c 100644
index e11d19f..32bf595 100644
--- a/server/file.h
+++ b/server/file.h
@@ -154,7 +154,8 @@ extern struct device *create_unix_device( struct directory *root, const struct u
@@ -154,7 +154,8 @@ extern struct device *create_unix_device( struct object *root, const struct unic
extern void do_change_notify( int unix_fd );
extern void sigio_callback(void);
@ -255,5 +255,5 @@ index b9e27e2..3274c5c 100644
/* completion */
--
2.7.0
2.8.0

View File

@ -1,14 +1,14 @@
From 46894941581a7d408983d55039308e03f2842b7a Mon Sep 17 00:00:00 2001
From 10dda0bfac5b79169b84f5a6eb97f0a8aee7a4eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Tue, 24 Feb 2015 04:25:29 +0100
Subject: shell32: Correct indentation in shfileop.c.
---
dlls/shell32/shlfileop.c | 730 +++++++++++++++++++++++------------------------
1 file changed, 365 insertions(+), 365 deletions(-)
dlls/shell32/shlfileop.c | 728 +++++++++++++++++++++++------------------------
1 file changed, 364 insertions(+), 364 deletions(-)
diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c
index 62d7880..ee40e39 100644
index 07635c8..ef2532d 100644
--- a/dlls/shell32/shlfileop.c
+++ b/dlls/shell32/shlfileop.c
@@ -164,7 +164,7 @@ static INT_PTR ConfirmMsgBox_Init(HWND hDlg, LPARAM lParam)
@ -807,7 +807,7 @@ index 62d7880..ee40e39 100644
}
/*************************************************************************
* SHFileOperationA [SHELL32.@]
@@ -865,43 +865,43 @@ static DWORD SHNameTranslate(LPWSTR* wString, LPCWSTR* pWToFrom, BOOL more)
@@ -865,42 +865,42 @@ static DWORD SHNameTranslate(LPWSTR* wString, LPCWSTR* pWToFrom, BOOL more)
*/
int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp)
{
@ -840,7 +840,6 @@ index 62d7880..ee40e39 100644
- if (ForFree) continue;
- retCode = ERROR_OUTOFMEMORY;
- nFileOp.fAnyOperationsAborted = TRUE;
- SetLastError(retCode);
- return retCode;
- }
- }
@ -877,7 +876,6 @@ index 62d7880..ee40e39 100644
+ if (ForFree) continue;
+ retCode = ERROR_OUTOFMEMORY;
+ nFileOp.fAnyOperationsAborted = TRUE;
+ SetLastError(retCode);
+ return retCode;
+ }
+ }
@ -888,7 +886,7 @@ index 62d7880..ee40e39 100644
}
#define ERROR_SHELL_INTERNAL_FILE_NOT_FOUND 1026
@@ -931,7 +931,7 @@ typedef struct
@@ -930,7 +930,7 @@ typedef struct
static inline void grow_list(FILE_LIST *list)
{
FILE_ENTRY *new = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, list->feFiles,
@ -897,7 +895,7 @@ index 62d7880..ee40e39 100644
list->feFiles = new;
list->num_alloc *= 2;
}
@@ -1023,7 +1023,7 @@ static HRESULT parse_file_list(FILE_LIST *flList, LPCWSTR szFiles)
@@ -1022,7 +1022,7 @@ static HRESULT parse_file_list(FILE_LIST *flList, LPCWSTR szFiles)
/* empty list */
if (!szFiles[0])
return ERROR_ACCESS_DENIED;
@ -906,7 +904,7 @@ index 62d7880..ee40e39 100644
flList->feFiles = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
flList->num_alloc * sizeof(FILE_ENTRY));
@@ -1127,7 +1127,7 @@ static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWST
@@ -1126,7 +1126,7 @@ static void copy_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWST
/* Don't ask the user about overwriting files when he accepted to overwrite the
folder. FIXME: this is not exactly what Windows does - e.g. there would be
an additional confirmation for a nested folder */
@ -915,7 +913,7 @@ index 62d7880..ee40e39 100644
SHFileOperationW(&fileOp);
}
@@ -1339,7 +1339,7 @@ static DWORD delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
@@ -1339,7 +1339,7 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
/* Windows also checks only the first item */
bTrash = (lpFileOp->fFlags & FOF_ALLOWUNDO)
@ -924,7 +922,7 @@ index 62d7880..ee40e39 100644
if (!(lpFileOp->fFlags & FOF_NOCONFIRMATION) || (!bTrash && lpFileOp->fFlags & FOF_WANTNUKEWARNING))
if (!confirm_delete_list(lpFileOp->hwnd, lpFileOp->fFlags, bTrash, flFrom))
@@ -1374,11 +1374,11 @@ static DWORD delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
@@ -1374,11 +1374,11 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
break;
}
}
@ -938,7 +936,7 @@ index 62d7880..ee40e39 100644
else
ret = SHELL_DeleteDirectoryW(lpFileOp->hwnd, fileEntry->szFullPath, FALSE);
@@ -1528,8 +1528,8 @@ static DWORD rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, c
@@ -1503,8 +1503,8 @@ static int rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
static void check_flags(FILEOP_FLAGS fFlags)
{
WORD wUnsupportedFlags = FOF_NO_CONNECTED_ELEMENTS |
@ -949,7 +947,7 @@ index 62d7880..ee40e39 100644
if (fFlags & wUnsupportedFlags)
FIXME("Unsupported flags: %04x\n", fFlags);
@@ -1611,19 +1611,19 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
@@ -1587,19 +1587,19 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
*/
void WINAPI SHFreeNameMappings(HANDLE hNameMapping)
{
@ -979,7 +977,7 @@ index 62d7880..ee40e39 100644
}
/*************************************************************************
@@ -1729,14 +1729,14 @@ DWORD WINAPI SheChangeDirW(LPWSTR path)
@@ -1705,14 +1705,14 @@ DWORD WINAPI SheChangeDirW(LPWSTR path)
}
/*************************************************************************
@ -1000,5 +998,5 @@ index 62d7880..ee40e39 100644
--
2.3.0
2.8.0

View File

@ -1,4 +1,4 @@
From 725a496f1d8484b7392ef0f14cb13ddd18b1dca5 Mon Sep 17 00:00:00 2001
From 3c2e5967acbc177bf43c2cb6012bdc22c7a59fb2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 27 Feb 2015 01:04:33 +0100
Subject: shell32: Implement file operation progress dialog.
@ -11,7 +11,7 @@ Based on a patch by Huw Campbell.
3 files changed, 285 insertions(+), 7 deletions(-)
diff --git a/dlls/shell32/shell32.rc b/dlls/shell32/shell32.rc
index 37acbe7..dd054fb 100644
index bfba962..277b23a 100644
--- a/dlls/shell32/shell32.rc
+++ b/dlls/shell32/shell32.rc
@@ -184,6 +184,13 @@ If the files in the destination folder have the same names as files in the\n\
@ -29,7 +29,7 @@ index 37acbe7..dd054fb 100644
IDS_RESTART_TITLE "Restart"
IDS_RESTART_PROMPT "Do you want to simulate a Windows reboot?"
diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c
index ed8ff38..0d50223 100644
index 5f0189b..5ad241c 100644
--- a/dlls/shell32/shlfileop.c
+++ b/dlls/shell32/shlfileop.c
@@ -65,6 +65,10 @@ typedef struct
@ -140,7 +140,7 @@ index ed8ff38..0d50223 100644
if (ret)
{
SHChangeNotify(SHCNE_CREATE, SHCNF_PATHW, dest, NULL);
@@ -1293,6 +1332,8 @@ static DWORD copy_files(FILE_OPERATION *op, BOOL multidest, const FILE_LIST *flF
@@ -1292,6 +1331,8 @@ static int copy_files(FILE_OPERATION *op, BOOL multidest, const FILE_LIST *flFro
}
/* Vista return code. XP would return e.g. ERROR_FILE_NOT_FOUND, ERROR_ALREADY_EXISTS */
@ -149,7 +149,7 @@ index ed8ff38..0d50223 100644
if (op->bCancelled)
return ERROR_CANCELLED;
}
@@ -1374,13 +1415,17 @@ static DWORD delete_files(FILE_OPERATION *op, const FILE_LIST *flFrom)
@@ -1374,13 +1415,17 @@ static int delete_files(FILE_OPERATION *op, const FILE_LIST *flFrom)
/* delete the file or directory */
if (IsAttribFile(fileEntry->attributes))
@ -169,7 +169,7 @@ index ed8ff38..0d50223 100644
}
return ERROR_SUCCESS;
@@ -1485,6 +1530,11 @@ static DWORD move_files(FILE_OPERATION *op, BOOL multidest, const FILE_LIST *flF
@@ -1455,6 +1500,11 @@ static int move_files(FILE_OPERATION *op, BOOL multidest, const FILE_LIST *flFro
move_to_dir(op, entryToMove, fileDest);
else
SHNotifyMoveFileW(op, entryToMove->szFullPath, fileDest->szFullPath);
@ -181,7 +181,7 @@ index ed8ff38..0d50223 100644
}
if (mismatched > 0)
@@ -1544,6 +1594,7 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
@@ -1514,6 +1564,7 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
{
FILE_OPERATION op;
FILE_LIST flFrom, flTo;
@ -189,7 +189,7 @@ index ed8ff38..0d50223 100644
int ret = 0;
if (!lpFileOp)
@@ -1562,9 +1613,31 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
@@ -1532,9 +1583,31 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
ZeroMemory(&op, sizeof(op));
op.req = lpFileOp;
@ -221,7 +221,7 @@ index ed8ff38..0d50223 100644
switch (lpFileOp->wFunc)
{
case FO_COPY:
@@ -1584,6 +1657,12 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
@@ -1554,6 +1627,12 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
break;
}
@ -234,17 +234,17 @@ index ed8ff38..0d50223 100644
destroy_file_list(&flFrom);
if (lpFileOp->wFunc != FO_DELETE)
@@ -1592,6 +1671,9 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
@@ -1562,6 +1641,9 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
if (ret == ERROR_CANCELLED)
lpFileOp->fAnyOperationsAborted = TRUE;
+ if (SUCCEEDED(co_ret))
+ CoUninitialize();
+
SetLastError(ERROR_SUCCESS);
return ret;
}
@@ -1822,3 +1904,184 @@ HRESULT WINAPI SHPathPrepareForWriteW(HWND hwnd, IUnknown *modless, LPCWSTR path
@@ -1793,3 +1875,184 @@ HRESULT WINAPI SHPathPrepareForWriteW(HWND hwnd, IUnknown *modless, LPCWSTR path
else
return HRESULT_FROM_WIN32(ERROR_DIRECTORY);
}
@ -449,5 +449,5 @@ index 183a75e..8ee525a 100644
#define IDS_RECYCLEBIN_FOLDER_NAME 8964
--
2.3.0
2.8.0

View File

@ -1,63 +0,0 @@
From 4ff58d5b7b2bef1db7dc151976e111ddea9b91a3 Mon Sep 17 00:00:00 2001
From: "Olivier F. R. Dierick" <o.dierick@piezo-forte.be>
Date: Sat, 28 Nov 2015 06:25:33 +0100
Subject: shell32: Check IsWoW64Process before calling Wow64 functions (try 2)
Replace patch entry 116937.
Fix one of the error leak source that prevents the installer to succeed
(bug 36838).
On 32 bit Wine, the original code did set last error to
ERROR_CALL_NOT_IMPLEMENTED when calling wow64 functions. The game
installer chokes at some point when the last error is anything but zero
and fails to complete the installation. Checking if wow64 is available
before calling wow64 functions avoids that. The affected wow64 function
calls themselves are not required for proper operation on 32 bit
systems.
Signed-off-by: Olivier F. R. Dierick <o.dierick@piezo-forte.be>
---
dlls/shell32/shfldr_unixfs.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/shell32/shfldr_unixfs.c b/dlls/shell32/shfldr_unixfs.c
index 85383e8..7de38ba 100644
--- a/dlls/shell32/shfldr_unixfs.c
+++ b/dlls/shell32/shfldr_unixfs.c
@@ -392,6 +392,7 @@ static BOOL UNIXFS_get_unix_path(LPCWSTR pszDosPath, char *pszCanonicalPath)
BOOL has_failed = FALSE;
WCHAR wszDrive[] = { '?', ':', '\\', 0 }, dospath[MAX_PATH], *dospath_end;
int cDriveSymlinkLen;
+ BOOL is_wow64;
void *redir;
TRACE("(pszDosPath=%s, pszCanonicalPath=%p)\n", debugstr_w(pszDosPath), pszCanonicalPath);
@@ -408,13 +409,14 @@ static BOOL UNIXFS_get_unix_path(LPCWSTR pszDosPath, char *pszCanonicalPath)
HeapFree(GetProcessHeap(), 0, pszUnixPath);
if (!pElement) return FALSE;
if (szPath[strlen(szPath)-1] != '/') strcat(szPath, "/");
+ if (!IsWow64Process(GetCurrentProcess(), &is_wow64)) is_wow64 = FALSE;
/* Append the part relative to the drive symbolic link target. */
lstrcpyW(dospath, pszDosPath);
dospath_end = dospath + lstrlenW(dospath);
/* search for the most valid UNIX path possible, then append missing
* path parts */
- Wow64DisableWow64FsRedirection(&redir);
+ if(is_wow64) Wow64DisableWow64FsRedirection(&redir);
while(!(pszUnixPath = wine_get_unix_file_name(dospath))){
if(has_failed){
*dospath_end = '/';
@@ -428,7 +430,7 @@ static BOOL UNIXFS_get_unix_path(LPCWSTR pszDosPath, char *pszCanonicalPath)
}
*dospath_end = '\0';
}
- Wow64RevertWow64FsRedirection(redir);
+ if(is_wow64) Wow64RevertWow64FsRedirection(redir);
if(dospath_end < dospath)
return FALSE;
strcat(szPath, pszUnixPath + cDriveSymlinkLen);
--
2.6.4

View File

@ -1 +0,0 @@
Fixes: Check IsWoW64Process before calling Wow64 functions in UNIXFS_get_unix_path

View File

@ -1,4 +1,4 @@
From 64afa20c1fba6856edc379c4a4cd0871b905e938 Mon Sep 17 00:00:00 2001
From 8e718993307d5ea6c415e4d169b3e37f0d85e5fd Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Thu, 7 Apr 2016 21:18:44 +0800
Subject: user32: Add support for PNG icons. (v5)
@ -21,7 +21,7 @@ index b5c80a8..d0381f3 100644
C_SRCS = \
diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c
index 4de6b28..4879988 100644
index 4f93195..3899854 100644
--- a/dlls/user32/cursoricon.c
+++ b/dlls/user32/cursoricon.c
@@ -6,6 +6,8 @@
@ -43,7 +43,7 @@ index 4de6b28..4879988 100644
#include "windef.h"
#include "winbase.h"
@@ -43,6 +48,7 @@
@@ -43,11 +48,17 @@
#include "wine/list.h"
#include "wine/unicode.h"
#include "wine/debug.h"
@ -51,9 +51,7 @@ index 4de6b28..4879988 100644
WINE_DEFAULT_DEBUG_CHANNEL(cursor);
WINE_DECLARE_DEBUG_CHANNEL(icon);
@@ -71,6 +77,11 @@ typedef struct
#include "poppack.h"
WINE_DECLARE_DEBUG_CHANNEL(resource);
+#define RIFF_FOURCC( c0, c1, c2, c3 ) \
+ ( (DWORD)(BYTE)(c0) | ( (DWORD)(BYTE)(c1) << 8 ) | \
@ -63,7 +61,7 @@ index 4de6b28..4879988 100644
static HDC screen_dc;
static const WCHAR DISPLAYW[] = {'D','I','S','P','L','A','Y',0};
@@ -119,6 +130,307 @@ struct animated_cursoricon_object
@@ -96,6 +107,307 @@ struct animated_cursoricon_object
HICON frames[1]; /* list of animated cursor frames */
};
@ -371,7 +369,7 @@ index 4de6b28..4879988 100644
static HICON alloc_icon_handle( BOOL is_ani, UINT num_steps )
{
struct cursoricon_object *obj;
@@ -534,6 +846,8 @@ static int CURSORICON_FindBestIcon( LPCVOID dir, DWORD size, fnGetCIEntry get_en
@@ -511,6 +823,8 @@ static int CURSORICON_FindBestIcon( LPCVOID dir, DWORD size, fnGetCIEntry get_en
/* Find Best Colors for Best Fit */
for ( i = 0; get_entry( dir, size, i, &cx, &cy, &bits ); i++ )
{
@ -380,7 +378,7 @@ index 4de6b28..4879988 100644
if(abs(width - cx) == iXDiff && abs(height - cy) == iYDiff)
{
iTempColorDiff = abs(depth - bits);
@@ -678,7 +992,11 @@ static BOOL CURSORICON_GetFileEntry( LPCVOID dir, DWORD size, int n,
@@ -655,7 +969,11 @@ static BOOL CURSORICON_GetFileEntry( LPCVOID dir, DWORD size, int n,
return FALSE;
entry = &filedir->idEntries[n];
info = (const BITMAPINFOHEADER *)((const char *)dir + entry->dwDIBOffset);
@ -393,7 +391,7 @@ index 4de6b28..4879988 100644
{
if ((const char *)(info + 1) - (const char *)dir > size) return FALSE;
*bits = info->biBitCount;
@@ -822,6 +1140,21 @@ static HICON create_icon_from_bmi( const BITMAPINFO *bmi, DWORD maxsize, HMODULE
@@ -799,6 +1117,21 @@ static HICON create_icon_from_bmi( const BITMAPINFO *bmi, DWORD maxsize, HMODULE
/* Check bitmap header */
@ -415,7 +413,7 @@ index 4de6b28..4879988 100644
if (maxsize < sizeof(BITMAPCOREHEADER))
{
WARN( "invalid size %u\n", maxsize );
@@ -1003,10 +1336,6 @@ done:
@@ -980,10 +1313,6 @@ done:
/**********************************************************************
* .ANI cursor support
*/
@ -427,5 +425,5 @@ index 4de6b28..4879988 100644
#define ANI_LIST_ID RIFF_FOURCC('L', 'I', 'S', 'T')
#define ANI_ACON_ID RIFF_FOURCC('A', 'C', 'O', 'N')
--
2.7.1
2.8.0

View File

@ -1 +1 @@
Wine Staging 1.9.9
Wine Staging 1.9.10 (unreleased)