From 8e5acbdae36f390f714eb2e373a1c9129f8dfbf0 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Mon, 2 May 2016 20:34:01 +0200 Subject: [PATCH] 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). --- ...OK-from-DwmSetWindowAttribute-functi.patch | 25 ------ .../dwmapi-DwmSetWindowAttribute/definition | 1 - ...t-FileNamesInformation-class-support.patch | 12 +-- ...001-ntdll-Implement-NtSetLdtEntries.patch} | 0 ...dtEntries-ZwSetLdtEntries-stub-try-2.patch | 82 ------------------- ...llow-to-modify-reserved-LDT-entries.patch} | 0 ...-Reserved_0-bit-in-NtQueryInformatio.patch | 24 ------ patches/ntdll-NtSetLdtEntries/definition | 2 - patches/patchinstall.sh | 54 ++---------- ...-a-new-alloc_handle-object-callback..patch | 78 +++++++++--------- ...-support-for-global-and-local-shared.patch | 24 +++--- ...ly-store-the-full-security-descripto.patch | 26 +++--- ...32-Correct-indentation-in-shfileop.c.patch | 30 ++++--- ...ement-file-operation-progress-dialog.patch | 26 +++--- ...WoW64Process-before-calling-Wow64-fu.patch | 63 -------------- .../shell32-UNIXFS_get_unix_path/definition | 1 - ...user32-Add-support-for-PNG-icons.-v4.patch | 22 +++-- staging/VERSION | 2 +- 18 files changed, 113 insertions(+), 359 deletions(-) delete mode 100644 patches/dwmapi-DwmSetWindowAttribute/0001-dwmapi-Return-S_OK-from-DwmSetWindowAttribute-functi.patch delete mode 100644 patches/dwmapi-DwmSetWindowAttribute/definition rename patches/ntdll-NtSetLdtEntries/{0003-ntdll-Implement-NtSetLdtEntries.patch => 0001-ntdll-Implement-NtSetLdtEntries.patch} (100%) delete mode 100644 patches/ntdll-NtSetLdtEntries/0001-ntdll-add-NtSetLdtEntries-ZwSetLdtEntries-stub-try-2.patch rename patches/ntdll-NtSetLdtEntries/{0004-libs-wine-Allow-to-modify-reserved-LDT-entries.patch => 0002-libs-wine-Allow-to-modify-reserved-LDT-entries.patch} (100%) delete mode 100644 patches/ntdll-NtSetLdtEntries/0002-ntdll-Initialize-Reserved_0-bit-in-NtQueryInformatio.patch delete mode 100644 patches/ntdll-NtSetLdtEntries/definition delete mode 100644 patches/shell32-UNIXFS_get_unix_path/0001-shell32-Check-IsWoW64Process-before-calling-Wow64-fu.patch delete mode 100644 patches/shell32-UNIXFS_get_unix_path/definition diff --git a/patches/dwmapi-DwmSetWindowAttribute/0001-dwmapi-Return-S_OK-from-DwmSetWindowAttribute-functi.patch b/patches/dwmapi-DwmSetWindowAttribute/0001-dwmapi-Return-S_OK-from-DwmSetWindowAttribute-functi.patch deleted file mode 100644 index dd0a99cf..00000000 --- a/patches/dwmapi-DwmSetWindowAttribute/0001-dwmapi-Return-S_OK-from-DwmSetWindowAttribute-functi.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 12fa52d23ad77d08100444fd04b9deaf06b5ac63 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -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 - diff --git a/patches/dwmapi-DwmSetWindowAttribute/definition b/patches/dwmapi-DwmSetWindowAttribute/definition deleted file mode 100644 index cad9a061..00000000 --- a/patches/dwmapi-DwmSetWindowAttribute/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: Fake success in dwmapi.DwmSetWindowAttribute function diff --git a/patches/ntdll-FileNamesInformation/0001-ntdll-Implement-FileNamesInformation-class-support.patch b/patches/ntdll-FileNamesInformation/0001-ntdll-Implement-FileNamesInformation-class-support.patch index 3ee9a74e..c8451695 100644 --- a/patches/ntdll-FileNamesInformation/0001-ntdll-Implement-FileNamesInformation-class-support.patch +++ b/patches/ntdll-FileNamesInformation/0001-ntdll-Implement-FileNamesInformation-class-support.patch @@ -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 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: diff --git a/patches/ntdll-NtSetLdtEntries/0003-ntdll-Implement-NtSetLdtEntries.patch b/patches/ntdll-NtSetLdtEntries/0001-ntdll-Implement-NtSetLdtEntries.patch similarity index 100% rename from patches/ntdll-NtSetLdtEntries/0003-ntdll-Implement-NtSetLdtEntries.patch rename to patches/ntdll-NtSetLdtEntries/0001-ntdll-Implement-NtSetLdtEntries.patch diff --git a/patches/ntdll-NtSetLdtEntries/0001-ntdll-add-NtSetLdtEntries-ZwSetLdtEntries-stub-try-2.patch b/patches/ntdll-NtSetLdtEntries/0001-ntdll-add-NtSetLdtEntries-ZwSetLdtEntries-stub-try-2.patch deleted file mode 100644 index 10d95bd4..00000000 --- a/patches/ntdll-NtSetLdtEntries/0001-ntdll-add-NtSetLdtEntries-ZwSetLdtEntries-stub-try-2.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 15201062dd669c30343f7d1a1157c254943267ea Mon Sep 17 00:00:00 2001 -From: Austin English -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 - diff --git a/patches/ntdll-NtSetLdtEntries/0004-libs-wine-Allow-to-modify-reserved-LDT-entries.patch b/patches/ntdll-NtSetLdtEntries/0002-libs-wine-Allow-to-modify-reserved-LDT-entries.patch similarity index 100% rename from patches/ntdll-NtSetLdtEntries/0004-libs-wine-Allow-to-modify-reserved-LDT-entries.patch rename to patches/ntdll-NtSetLdtEntries/0002-libs-wine-Allow-to-modify-reserved-LDT-entries.patch diff --git a/patches/ntdll-NtSetLdtEntries/0002-ntdll-Initialize-Reserved_0-bit-in-NtQueryInformatio.patch b/patches/ntdll-NtSetLdtEntries/0002-ntdll-Initialize-Reserved_0-bit-in-NtQueryInformatio.patch deleted file mode 100644 index 13cb6f7c..00000000 --- a/patches/ntdll-NtSetLdtEntries/0002-ntdll-Initialize-Reserved_0-bit-in-NtQueryInformatio.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 211c1988706a03296da84d5b2607de3ec9e5ca68 Mon Sep 17 00:00:00 2001 -From: Sebastian Lackner -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 - diff --git a/patches/ntdll-NtSetLdtEntries/definition b/patches/ntdll-NtSetLdtEntries/definition deleted file mode 100644 index 46ea5767..00000000 --- a/patches/ntdll-NtSetLdtEntries/definition +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: [26268] Add stub for NtSetLdtEntries/ZwSetLdtEntries -Category: stable diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 493c8d52..2474d14c 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -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: diff --git a/patches/server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch b/patches/server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch index 453824b9..24421797 100644 --- a/patches/server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch +++ b/patches/server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch @@ -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 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 diff --git a/patches/server-Shared_Memory/0002-server-Implement-support-for-global-and-local-shared.patch b/patches/server-Shared_Memory/0002-server-Implement-support-for-global-and-local-shared.patch index 0cdc61e6..2a7de69f 100644 --- a/patches/server-Shared_Memory/0002-server-Implement-support-for-global-and-local-shared.patch +++ b/patches/server-Shared_Memory/0002-server-Implement-support-for-global-and-local-shared.patch @@ -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?= 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 diff --git a/patches/server-Stored_ACLs/0004-server-Temporarily-store-the-full-security-descripto.patch b/patches/server-Stored_ACLs/0004-server-Temporarily-store-the-full-security-descripto.patch index 4684984c..a6871d2a 100644 --- a/patches/server-Stored_ACLs/0004-server-Temporarily-store-the-full-security-descripto.patch +++ b/patches/server-Stored_ACLs/0004-server-Temporarily-store-the-full-security-descripto.patch @@ -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 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 diff --git a/patches/shell32-Progress_Dialog/0001-shell32-Correct-indentation-in-shfileop.c.patch b/patches/shell32-Progress_Dialog/0001-shell32-Correct-indentation-in-shfileop.c.patch index 3c414c45..e7897970 100644 --- a/patches/shell32-Progress_Dialog/0001-shell32-Correct-indentation-in-shfileop.c.patch +++ b/patches/shell32-Progress_Dialog/0001-shell32-Correct-indentation-in-shfileop.c.patch @@ -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?= 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 diff --git a/patches/shell32-Progress_Dialog/0003-shell32-Implement-file-operation-progress-dialog.patch b/patches/shell32-Progress_Dialog/0003-shell32-Implement-file-operation-progress-dialog.patch index 11485d14..0e76ed7a 100644 --- a/patches/shell32-Progress_Dialog/0003-shell32-Implement-file-operation-progress-dialog.patch +++ b/patches/shell32-Progress_Dialog/0003-shell32-Implement-file-operation-progress-dialog.patch @@ -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?= 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 diff --git a/patches/shell32-UNIXFS_get_unix_path/0001-shell32-Check-IsWoW64Process-before-calling-Wow64-fu.patch b/patches/shell32-UNIXFS_get_unix_path/0001-shell32-Check-IsWoW64Process-before-calling-Wow64-fu.patch deleted file mode 100644 index b0ba6499..00000000 --- a/patches/shell32-UNIXFS_get_unix_path/0001-shell32-Check-IsWoW64Process-before-calling-Wow64-fu.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 4ff58d5b7b2bef1db7dc151976e111ddea9b91a3 Mon Sep 17 00:00:00 2001 -From: "Olivier F. R. Dierick" -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 ---- - 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 - diff --git a/patches/shell32-UNIXFS_get_unix_path/definition b/patches/shell32-UNIXFS_get_unix_path/definition deleted file mode 100644 index 11d4df23..00000000 --- a/patches/shell32-UNIXFS_get_unix_path/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: Check IsWoW64Process before calling Wow64 functions in UNIXFS_get_unix_path diff --git a/patches/user32-PNG_Support/0001-user32-Add-support-for-PNG-icons.-v4.patch b/patches/user32-PNG_Support/0001-user32-Add-support-for-PNG-icons.-v4.patch index fc96ab09..c0ff1b92 100644 --- a/patches/user32-PNG_Support/0001-user32-Add-support-for-PNG-icons.-v4.patch +++ b/patches/user32-PNG_Support/0001-user32-Add-support-for-PNG-icons.-v4.patch @@ -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 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 diff --git a/staging/VERSION b/staging/VERSION index a9b4c44c..07ac8c12 100644 --- a/staging/VERSION +++ b/staging/VERSION @@ -1 +1 @@ -Wine Staging 1.9.9 +Wine Staging 1.9.10 (unreleased)