Compare commits

...

89 Commits

Author SHA1 Message Date
Sebastian Lackner
0defa32dfb Release 1.7.43. 2015-05-16 22:59:02 +02:00
Sebastian Lackner
1c29f7db86 Update category information for all patchsets. 2015-05-16 18:48:49 +02:00
Sebastian Lackner
bfb112653c Added patch to skip unknown item when decoding a CMS certificate. 2015-05-16 17:55:21 +02:00
Sebastian Lackner
7a5534ac75 Added patch with stub for kernel32.SetFileCompletionNotificationModes (for Steam in Win7 mode). 2015-05-16 17:19:40 +02:00
Sebastian Lackner
1bbf522c01 Added patch to free RPC parameters allocated by application before anything else. 2015-05-16 04:29:53 +02:00
Sebastian Lackner
95496eedab ntdll-Heap_Delay_Free: Disable patchset, it causes failures for other apps.
Will be re-added after the release when the patch has been improved.
2015-05-16 03:50:29 +02:00
Sebastian Lackner
13effc62f8 wininet-Cleanup: Added various additional fixes for wininet header handling. 2015-05-16 03:45:42 +02:00
Sebastian Lackner
975564c566 wininet-Cleanup: Added next couple of patches and merge with wininet-Memory_Leak. 2015-05-16 03:45:42 +02:00
Sebastian Lackner
8e4c7f1017 Added patch to add HTTP Host header in HttpSendRequest instead of HttpOpenRequest. 2015-05-16 03:45:41 +02:00
Sebastian Lackner
e2d58b98e4 Updated patch to emulate \Device\Null using /dev/null, use a proper device driver. 2015-05-16 03:45:41 +02:00
Sebastian Lackner
26e06cc151 Added patches for additional tests of wininet cookie/header/authentication handling, in preparation of various cleanup patches. 2015-05-16 03:45:41 +02:00
Sebastian Lackner
90bf076dfc Added patch to fix memory leak in wininet.HTTP_InsertCookies. 2015-05-16 03:45:41 +02:00
Sebastian Lackner
dcfee86e79 Added patch with tests for imagehlp.{ImageLoad,ImageUnload,GetImageUnusedHeaderBytes}. 2015-05-15 02:48:15 +02:00
Sebastian Lackner
a3ca9927db Added patch to implement kernel32.GetSystemTimePreciseAsFileTime. 2015-05-14 03:14:44 +02:00
Sebastian Lackner
d114a05de3 Added patch to allocate fake hWnd for wineconsole curses backend. 2015-05-13 19:32:09 +02:00
Sebastian Lackner
fb7bff38de Added patch to create stub files for system32/drivers/etc/{services,hosts,networks,protocol}. 2015-05-13 07:11:50 +02:00
Sebastian Lackner
2a8300034c Added patch with IEnumString stub interface for ACLShellSource. 2015-05-13 04:58:51 +02:00
Sebastian Lackner
1b0d071e41 Added patch to avoid creating foreign thread queues for attach_thread_input requests. 2015-05-12 05:46:20 +02:00
Sebastian Lackner
134b99fbb2 Added patch to implement shlwapi.AssocGetPerceivedType. 2015-05-12 03:36:39 +02:00
Sebastian Lackner
c3c9472eb4 Added patch for stub of fltlib.FilterLoad. 2015-05-11 18:19:20 +02:00
Sebastian Lackner
5215a311fe Rebase against 6d323d81b2a604b89c612928a573b290c945df75. 2015-05-11 18:10:47 +02:00
Sebastian Lackner
d3dbcb9165 Added patch to use POSIX implementation to enumerate directory content on FreeBSD. 2015-05-10 02:26:38 +02:00
Sebastian Lackner
53734776f6 ntdll-NtQuerySection: Fix signature also in ntoskrnl.exe specfile. 2015-05-09 21:03:46 +02:00
Sebastian Lackner
54451f955b advapi32-ImpersonateAnonymousToken: Add exports to api-ms-win-security-base-l1-{1,2}-0. 2015-05-09 20:59:43 +02:00
Sebastian Lackner
2fbbd765c6 kernel32-GetFinalPathNameByHandle: Add exports to api-ms-win-core-file-l1-1-0. 2015-05-09 20:57:21 +02:00
Sebastian Lackner
954aed181c Added patch to dirtify vertex shader on transformed update, fixes graphical corruption. 2015-05-09 04:26:56 +02:00
Sebastian Lackner
da0ebd230f ntdll-Vista_Threadpool: Fix compiler warning on x86_64. 2015-05-09 04:20:50 +02:00
Sebastian Lackner
6fb06b865c dsound-EAX: Fix compiler warning on x86_64. 2015-05-09 04:04:15 +02:00
Sebastian Lackner
ffe90cf9f7 kernel32-CopyFileEx: Fix test failures in kernel32/file and add additional tests. 2015-05-09 00:42:45 +02:00
Sebastian Lackner
d6a8a1d8a1 Added patch to fix error handling in OpenSCManagerW (fixes testfailure in advapi32/service tests when named pipe messagemode is available). 2015-05-08 21:57:09 +02:00
Sebastian Lackner
7fd064ce86 Added patch to implement support for ObjectTypeInformation class support in NtQueryObject. 2015-05-08 19:58:53 +02:00
Sebastian Lackner
20f6d63e2b Added patch to fix leak of async handle in pipe_server_flush. 2015-05-08 19:58:53 +02:00
Sebastian Lackner
bd4c1e3006 patchupdate.py: Ignore categories for disabled patches. 2015-05-08 19:58:53 +02:00
Sebastian Lackner
0a1e04b9f2 Rebase against 3ec3fa5eb7d4eefd3157dfce31dbe561a6cda474. 2015-05-08 19:58:50 +02:00
Sebastian Lackner
977b8b34ad Added patch with stub for winsta.WinStationEnumerateW. 2015-05-07 06:34:45 +02:00
Sebastian Lackner
caf809b1d5 Added patch to return default palette entries from GetSystemPaletteEntries for non-palette-based devices. 2015-05-07 04:20:48 +02:00
Sebastian Lackner
d532c3b5bd patchupdate.py: Wrap debian/changelog at 80 chars. 2015-05-07 02:24:03 +02:00
Sebastian Lackner
952ab53219 Added patch to wait before reusing recently freed memory (fixes Wine Staging Bug #269 and #199). 2015-05-07 02:06:56 +02:00
Sebastian Lackner
e44c30c64e Added patch with stub for atl80.AtlIPersistPropertyBag_Save. 2015-05-06 23:21:06 +02:00
Sebastian Lackner
41f0cda558 patchinstall.sh: Simplify code to enable/disable patchsets. 2015-05-06 22:37:54 +02:00
Sebastian Lackner
552d300345 patchinstall.sh: Some style fixes, use underscore for local variables. 2015-05-06 22:22:46 +02:00
Sebastian Lackner
1143708578 patchupdate.py: Add '--version' command to show staging/wine version. 2015-05-06 22:09:04 +02:00
Sebastian Lackner
aa817e83cf patchupdate.py: When using --force-autoconf, only update files if required. 2015-05-06 20:42:32 +02:00
Sebastian Lackner
1bb34e22a6 patchinstall.sh: Add commandline option '--force-autoconf' to include autogenerated changes in each commit. 2015-05-06 20:41:18 +02:00
Sebastian Lackner
dd18228f7d patchinstall.sh: Only update ./configure and wineserver protocol files if required. 2015-05-06 19:29:17 +02:00
Sebastian Lackner
a78acf275d msvcp90-basic_string_dtor: Fix behaviour for both char and wchar strings. 2015-05-06 17:55:10 +02:00
Sebastian Lackner
8ace9d57c0 Rebase against upstream changes. 2015-05-06 17:34:48 +02:00
Sebastian Lackner
0c248ecda3 Added patch with tests for shlwapi.AssocGetPerceivedType. 2015-05-06 16:57:47 +02:00
Sebastian Lackner
04b7095098 Added patch to improve ReadDataAvailable handling in FilePipeLocalInformation class. 2015-05-06 15:00:29 +02:00
Sebastian Lackner
d97efcbab3 Compiler_Warnings: Removed patch to fix build failure, no longer required. 2015-05-06 00:29:08 +02:00
Sebastian Lackner
52e3343bbb Removed various patches (accepted upstream). 2015-05-05 20:59:51 +02:00
Sebastian Lackner
ab87b19a87 Updated patch to calculate msvcrt exponential math operations with higher precision (fixes Wine Staging Bug #268). 2015-05-05 01:36:50 +02:00
Sebastian Lackner
3426979ddf Disable patchset shell32-Default_Folder_ACLs (fixes Wine Staging Bug #265). 2015-05-04 21:52:33 +02:00
Sebastian Lackner
3f7b4894a7 Compiler_Warnings: Added patch to fix recently introduced build failure with gcc4.9. 2015-05-04 19:34:09 +02:00
Sebastian Lackner
e0390d0bdb Removed various patches (accepted upstream). 2015-05-04 19:02:31 +02:00
Sebastian Lackner
5848db0ab8 Release 1.7.42. 2015-05-03 22:02:59 +02:00
Sebastian Lackner
ffb7bab285 Added patch to create HKLM\Software\Microsoft\Cryptography\MachineGuid registry key. 2015-05-03 18:52:56 +02:00
Sebastian Lackner
f3b8a3bfa3 Added patch to make sure OpenClipboard with current owner doesn't fail. 2015-05-03 07:36:40 +02:00
Sebastian Lackner
b182064bef Added patch to emulate \Device\Null using /dev/null. 2015-05-02 21:00:56 +02:00
Sebastian Lackner
f23ff69f86 Added patch to return failure in NtProtectVirtualMemory when last argument is omitted. 2015-05-02 19:09:57 +02:00
Sebastian Lackner
e25c35e363 winedevice-Fix_Relocation: Do not omit mandatory argument for VirtualProtect. 2015-05-02 18:31:58 +02:00
Sebastian Lackner
12842d4a5d ntdll-FD_Cache: Update patchset with recent changes. 2015-05-02 07:12:06 +02:00
Sebastian Lackner
a02130583a ws2_32-Select: Update patchset with recent changes. 2015-05-02 06:49:10 +02:00
Sebastian Lackner
582e9666ed Partially removed patches to fix handling of opening read-only files for FILE_DELETE_ON_CLOSE (accepted upstream). 2015-05-01 01:44:20 +02:00
Sebastian Lackner
0ce637dcda Added patch with stub for advapi32.ImpersonateAnonymousToken (fixes Wine Staging Bug #254). 2015-04-30 01:48:38 +02:00
Sebastian Lackner
9f7c9e309a Added patch with stub for D3DXFrameFind. 2015-04-30 01:48:38 +02:00
Sebastian Lackner
2ce759172c d3dx9_36-D3DXStubs: Fix spec file entries for D3DXComputeNormalMap in all d3dx9_* dlls. 2015-04-30 01:48:38 +02:00
Sebastian Lackner
8ecb8c648e Added patch with stub for d3d11.D3D11CreateDeviceAndSwapChain. 2015-04-30 01:48:38 +02:00
Sebastian Lackner
97fb6e215a Removed multiple patches (accepted upstream). 2015-04-30 01:48:38 +02:00
Sebastian Lackner
1f8b2211dc Added patch to fix various issues related to advapi32.LookupAccountSidA. 2015-04-30 01:48:38 +02:00
Sebastian Lackner
e390275c1d advapi32-LsaLookupSids: Returns STATUS_SUCCESS instead of STATUS_SOME_NOT_MAPPED when possible. 2015-04-30 01:48:37 +02:00
Sebastian Lackner
30cc97b72e Partially removed patches to fix timezone information. 2015-04-30 01:48:37 +02:00
Sebastian Lackner
a1c7c48e57 patchupdate.py: Introduce categories for 'stable' patchsets.
Based on the discussion in bug 202, this patch adds support for categories
to patchupdate.py.
2015-04-30 01:48:37 +02:00
Sebastian Lackner
040fd28c00 Rebase against upstream changes. 2015-04-30 01:48:36 +02:00
Sebastian Lackner
90eb3105b8 Added patch to ignore garbage after decoding gif lines. 2015-04-27 03:59:48 +02:00
Sebastian Lackner
157d49eb57 Added patch to fix check for texture levels in wined3d_device_update_texture. 2015-04-27 03:13:00 +02:00
Sebastian Lackner
58cc16c463 Added patch to update timezone information in wine.inf. 2015-04-26 20:51:52 +02:00
Sebastian Lackner
92f1b745f6 Rebase against upstream wine. 2015-04-26 02:02:16 +02:00
Sebastian Lackner
cf78829843 Rebase against 3c0ed9ce0af5370f89605d8bc4ceaec578562ac1 2015-04-26 01:59:36 +02:00
Sebastian Lackner
55ce7ddfc3 wined3d-CSMT_Main: Use resource->format_flags instead of resource->format.flags where possible. 2015-04-26 00:10:29 +02:00
Sebastian Lackner
b84a5e83cb Rebase against 1e494a69c1a368badf03f844d5911b107e79d774. 2015-04-25 21:15:53 +02:00
Sebastian Lackner
4a8f10e17d opengl32-Revert_Disable_Ext: Update metadata, the upstream bug report was closed but the issue is not completely fixed yet. 2015-04-24 02:44:20 +02:00
Sebastian Lackner
309e515899 Added patch to implement FileFsFullSizeInformation information class. 2015-04-23 23:53:22 +02:00
Sebastian Lackner
eadec3171e server-Shared_Memory: Invalidate foreground window in attach_thread_input. 2015-04-23 20:58:21 +02:00
Sebastian Lackner
bc21be9437 server-Shared_Memory: Fix two small bugs. 2015-04-23 18:34:26 +02:00
Sebastian Lackner
8e8e15c81a Removed patch to fix issues with invalid console handles for new processes (accepted upstream). 2015-04-23 17:03:20 +02:00
Sebastian Lackner
a139cd10bd Removed patch for stub of ntdll.WinSqmIsOptedIn (fixed upstream). 2015-04-22 23:38:15 +02:00
Sebastian Lackner
d92acf00eb server-Shared_Memory: Rebase against upstream changes. 2015-04-21 17:58:48 +02:00
Sebastian Lackner
1566e72122 Removed patch to avoid crash when trying to bind mshtml event scripts to window (fixed upstream). 2015-04-20 15:57:54 +02:00
258 changed files with 9207 additions and 3117 deletions

View File

@@ -39,7 +39,7 @@ Wine. All those differences are also documented on the
Included bug fixes and improvements
-----------------------------------
**Bug fixes and features in Wine Staging 1.7.41 [218]:**
**Bug fixes and features in Wine Staging 1.7.43 [235]:**
*Note: The following list only contains features and bug fixes which are not
yet available in vanilla Wine. They are removed from the list as soon as they
@@ -48,11 +48,12 @@ releases, take a look at the
[changelog](https://github.com/wine-compholio/wine-staging/blob/master/debian/changelog)
for more details.*
* Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](https://bugs.winehq.org/show_bug.cgi?id=36374))
* Add HTTP Host header in HttpSendRequest instead of HttpOpenRequest ([Wine Bug #28911](https://bugs.winehq.org/show_bug.cgi?id=28911))
* Add IEnumString stub interface for ACLShellSource ([Wine Bug #18019](https://bugs.winehq.org/show_bug.cgi?id=18019))
* Add a ProfileList\<UserSID> registry subkey ([Wine Bug #15670](https://bugs.winehq.org/show_bug.cgi?id=15670))
* Add default ACLs for user shell folders
* Add implementation for CreateThreadpool ([Wine Bug #35192](https://bugs.winehq.org/show_bug.cgi?id=35192))
* Add implementation for mfplat.MFTRegister ([Wine Bug #37811](https://bugs.winehq.org/show_bug.cgi?id=37811))
* Add implementation for shlwapi.AssocGetPerceivedType
* Add nvapi stubs required for GPU PhysX support
* Add performance library registry keys needed by MS SQL Server Management Studio Express 2008 R2 ([Wine Bug #33661](https://bugs.winehq.org/show_bug.cgi?id=33661))
* Add semi-stub for GetFileVersionInfoExA/W ([Wine Bug #38098](https://bugs.winehq.org/show_bug.cgi?id=38098))
@@ -60,10 +61,15 @@ for more details.*
* Add stub fltmgr.sys (filter manager driver) ([Wine Bug #23583](https://bugs.winehq.org/show_bug.cgi?id=23583))
* Add stub for D3DXComputeNormalMap
* Add stub for D3DXComputeTangentFrameEx ([Wine Bug #31984](https://bugs.winehq.org/show_bug.cgi?id=31984))
* Add stub for D3DXFrameFind ([Wine Bug #38334](https://bugs.winehq.org/show_bug.cgi?id=38334))
* Add stub for D3DXIntersect
* Add stub for NtSetLdtEntries/ZwSetLdtEntries ([Wine Bug #26268](https://bugs.winehq.org/show_bug.cgi?id=26268))
* Add stub for WinSqmIsOptedIn ([Wine Bug #38388](https://bugs.winehq.org/show_bug.cgi?id=38388))
* Add stub for advapi32.ImpersonateAnonymousToken
* Add stub for atl80.AtlIPersistPropertyBag_Save ([Wine Bug #33888](https://bugs.winehq.org/show_bug.cgi?id=33888))
* Add stub for d3d11.D3D11CreateDeviceAndSwapChain ([Wine Bug #33153](https://bugs.winehq.org/show_bug.cgi?id=33153))
* Add stub for fltlib.FilterLoad ([Wine Bug #38435](https://bugs.winehq.org/show_bug.cgi?id=38435))
* Add stub for gdiplus.GdipCreateEffect ([Wine Bug #32163](https://bugs.winehq.org/show_bug.cgi?id=32163))
* Add stub for kernel32.SetFileCompletionNotificationModes (for Steam in Win7 mode) ([Wine Bug #38493](https://bugs.winehq.org/show_bug.cgi?id=38493))
* Add stub for ntoskrnl.ExAcquireResourceExclusiveLite
* Add stub for ntoskrnl.ExDeleteResourceLite
* Add stub for ntoskrnl.ExReleaseResourceForThread
@@ -72,12 +78,14 @@ for more details.*
* Add stub for ntoskrnl.PsRemoveLoadImageNotifyRoutine
* Add stub for setupapi.SetupDiSelectBestCompatDrv ([Wine Bug #32088](https://bugs.winehq.org/show_bug.cgi?id=32088))
* Add stub for wininet.ParseX509EncodedCertificateForListBoxEntry ([Wine Bug #29842](https://bugs.winehq.org/show_bug.cgi?id=29842))
* Add stub for winsta.WinStationEnumerateW ([Wine Bug #38102](https://bugs.winehq.org/show_bug.cgi?id=38102))
* Add stubs for D3DXCreateAnimationController interface
* Add support for CopyFileEx progress callback ([Wine Bug #22692](https://bugs.winehq.org/show_bug.cgi?id=22692))
* Add support for GetPropValue to PulseAudio backend
* Add support for process specific debug channels
* Add support for wbemprox Win32_SystemEnclosure table ([Wine Bug #34517](https://bugs.winehq.org/show_bug.cgi?id=34517))
* Adobe Reader needs ITextSelection_fnGetDuplicate implementation
* Allocate fake hWnd for wineconsole curses backend ([Wine Bug #34930](https://bugs.winehq.org/show_bug.cgi?id=34930))
* Allow selection of audio device for PulseAudio backend
* Allow special characters in pipe names ([Wine Bug #28995](https://bugs.winehq.org/show_bug.cgi?id=28995))
* Allow to cancel a file operation via progress callback ([Wine Bug #22690](https://bugs.winehq.org/show_bug.cgi?id=22690))
@@ -86,7 +94,6 @@ for more details.*
* Allow to override number of quality levels for D3DMULTISAMPLE_NONMASKABLE. ([Wine Bug #12652](https://bugs.winehq.org/show_bug.cgi?id=12652))
* Anno 1602 installer depends on Windows 98 behavior of SHFileOperationW ([Wine Bug #37916](https://bugs.winehq.org/show_bug.cgi?id=37916))
* Audio stuttering and performance drops in multiple applications ([Wine Bug #30639](https://bugs.winehq.org/show_bug.cgi?id=30639))
* Avoid crash when trying to bind mshtml event scripts to window ([Wine Bug #38419](https://bugs.winehq.org/show_bug.cgi?id=38419))
* Avoid crashing when broken app tries to release surface although refcount is zero ([Wine Bug #18477](https://bugs.winehq.org/show_bug.cgi?id=18477))
* Avoid race-conditions in NtReadFile() operations with write watches.
* Avoid race-conditions of async WSARecv() operations with write watches.
@@ -97,9 +104,13 @@ for more details.*
* Black & White needs DXTn software decoding support ([Wine Bug #14939](https://bugs.winehq.org/show_bug.cgi?id=14939))
* CPU-Z fails to start because GetLogicalProcessorInformationEx returns FALSE
* Calculate msvcrt exponential math operations with higher precision ([Wine Bug #37149](https://bugs.winehq.org/show_bug.cgi?id=37149))
* Create HKLM\Software\Microsoft\Cryptography\MachineGuid registry key ([Wine Bug #38508](https://bugs.winehq.org/show_bug.cgi?id=38508))
* Create stub files for system32/drivers/etc/{services,hosts,networks,protocol} ([Wine Bug #12076](https://bugs.winehq.org/show_bug.cgi?id=12076))
* CreateProcess does not prioritize the working directory over the system search path ([Wine Bug #23934](https://bugs.winehq.org/show_bug.cgi?id=23934))
* D3DCompileShader should filter specific warning messages ([Wine Bug #33770](https://bugs.winehq.org/show_bug.cgi?id=33770))
* Dirtify vertex shader on transformed update to fix graphical corruption ([Wine Bug #38539](https://bugs.winehq.org/show_bug.cgi?id=38539))
* Do not append duplicate NULL characters when importing keys with regedit ([Wine Bug #37575](https://bugs.winehq.org/show_bug.cgi?id=37575))
* Do not create foreign thread queues for attach_thread_input requests ([Wine Bug #38562](https://bugs.winehq.org/show_bug.cgi?id=38562))
* Do not fail when a used context is passed to wglShareLists ([Wine Bug #11436](https://bugs.winehq.org/show_bug.cgi?id=11436))
* Emulate access to KI_USER_SHARED_DATA kernel page on x86_64 ([Wine Bug #33849](https://bugs.winehq.org/show_bug.cgi?id=33849))
* Enforce that surfaces are flushed after ReleaseDC
@@ -136,7 +147,7 @@ for more details.*
* Fix multithreading issues with fullscreen clipping ([Wine Bug #38087](https://bugs.winehq.org/show_bug.cgi?id=38087))
* Fix possible segfault in pulse_rd_loop of PulseAudio backend
* Fix race-condition when threads are killed during shutdown
* Fix regression caused by blacklisting supported OpenGL extensions ([Wine Bug #38264](https://bugs.winehq.org/show_bug.cgi?id=38264))
* Fix regression caused by blacklisting supported OpenGL extensions ([Wine Bug #38480](https://bugs.winehq.org/show_bug.cgi?id=38480))
* Fix return value of ScrollWindowEx for invisible windows ([Wine Bug #37706](https://bugs.winehq.org/show_bug.cgi?id=37706))
* Fix texture corruption in CSI: Fatal Conspiracy ([Wine Bug #33768](https://bugs.winehq.org/show_bug.cgi?id=33768))
* Fix unintentional leaks with ntdll internals
@@ -145,13 +156,14 @@ for more details.*
* Fix wrong defition of ntoskrnl.IoReleaseCancelSpinLock function.
* Fix wrong version of ID3DXEffect interface for d3dx9_24
* Fix wrong version of ID3DXEffect interface for d3dx9_25 ([Wine Bug #25138](https://bugs.winehq.org/show_bug.cgi?id=25138))
* Free RPC parameters allocated by application before anything else ([Wine Bug #36743](https://bugs.winehq.org/show_bug.cgi?id=36743))
* Games For Windows Live 1.x expects a valid linker version in the PE header ([Wine Bug #28768](https://bugs.winehq.org/show_bug.cgi?id=28768))
* GetMessage should remove already seen messages with higher priority ([Wine Bug #28884](https://bugs.winehq.org/show_bug.cgi?id=28884))
* GetMonitorInfo returns the same name for all monitors ([Wine Bug #37709](https://bugs.winehq.org/show_bug.cgi?id=37709))
* GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](https://bugs.winehq.org/show_bug.cgi?id=15980))
* Graphical issues in Inquisitor ([Wine Bug #32490](https://bugs.winehq.org/show_bug.cgi?id=32490))
* Hearthstone fails to start ([Wine Bug #36216](https://bugs.winehq.org/show_bug.cgi?id=36216))
* IOCTL_DVD_READ_STRUCTURE expects the wrong size of output buffer for some requests ([Wine Bug #37767](https://bugs.winehq.org/show_bug.cgi?id=37767))
* Ignore garbage after decoding gif lines ([Wine Bug #32227](https://bugs.winehq.org/show_bug.cgi?id=32227))
* Ignore unsupported flags for CoInternetSetFeatureEnabled ([Wine Bug #35197](https://bugs.winehq.org/show_bug.cgi?id=35197))
* Implement D3DXGetShaderOutputSemantics
* Implement DDENUMSURFACES_CANBECREATED in IDirectDraw7::EnumSurfaces ([Wine Bug #17233](https://bugs.winehq.org/show_bug.cgi?id=17233))
@@ -164,10 +176,12 @@ for more details.*
* Implement combase.WindowsSubstring function
* Implement empty enumerator for IWiaDevMgr::EnumDeviceInfo ([Wine Bug #27775](https://bugs.winehq.org/show_bug.cgi?id=27775))
* Implement exclusive mode in PulseAudio backend ([Wine Bug #37042](https://bugs.winehq.org/show_bug.cgi?id=37042))
* Implement kernel32.GetSystemTimePreciseAsFileTime ([Wine Bug #38513](https://bugs.winehq.org/show_bug.cgi?id=38513))
* Implement locking and synchronization of key states ([Wine Bug #31899](https://bugs.winehq.org/show_bug.cgi?id=31899))
* Implement mscoree._CorValidateImage for mono runtime
* Implement ntoskrnl driver testing framework.
* Implement ntoskrnl.KeInitializeMutex
* Implement null.sys to provide \Device\Null ([Wine Bug #38107](https://bugs.winehq.org/show_bug.cgi?id=38107))
* Implement proper handling of CLI .NET images in Wine library loader
* Implement stub for ntoskrnl.IoGetAttachedDeviceReference
* Implement stub for ntoskrnl.KeDelayExecutionThread.
@@ -176,6 +190,7 @@ for more details.*
* Implement threadpool timers ([Wine Bug #37306](https://bugs.winehq.org/show_bug.cgi?id=37306))
* Implement threadpool wait objects
* Implement threadpool work items ([Wine Bug #32531](https://bugs.winehq.org/show_bug.cgi?id=32531))
* Improve ReadDataAvailable handling in FilePipeLocalInformation class
* Improve stub for AEV_GetVolumeRange ([Wine Bug #35658](https://bugs.winehq.org/show_bug.cgi?id=35658))
* Improve stub for ID3DXEffectImpl_CloneEffect
* Improve stubs for AEV_{Get,Set}MasterVolumeLevel
@@ -183,7 +198,6 @@ for more details.*
* Improvement for heap allocation performance
* Jedi Knight: Dark Forces II crashes with winmm set to native ([Wine Bug #37983](https://bugs.winehq.org/show_bug.cgi?id=37983))
* Lego Stunt Rally requires DXTn software de/encoding support ([Wine Bug #25486](https://bugs.winehq.org/show_bug.cgi?id=25486))
* Lockfree algorithm for filedescriptor cache (improves file access speed)
* MSVCRT crashes when NULL is passed as string to atof or strtod ([Wine Bug #32550](https://bugs.winehq.org/show_bug.cgi?id=32550))
* MSYS2 expects correct handling of WRITECOPY memory protection ([Wine Bug #35561](https://bugs.winehq.org/show_bug.cgi?id=35561))
* Make it possible to change media center / tablet pc status ([Wine Bug #18732](https://bugs.winehq.org/show_bug.cgi?id=18732))
@@ -191,25 +205,26 @@ for more details.*
* Multiple applications need EnumDisplayDevicesW implementation ([Wine Bug #34978](https://bugs.winehq.org/show_bug.cgi?id=34978))
* Multiple applications start wrong executable if whitespace present in name ([Wine Bug #19666](https://bugs.winehq.org/show_bug.cgi?id=19666))
* Need for Speed 3 installer requires devices in HKEY_DYN_DATA ([Wine Bug #7115](https://bugs.winehq.org/show_bug.cgi?id=7115))
* OpenClipboard with current owner shouldn't fail ([Wine Bug #2805](https://bugs.winehq.org/show_bug.cgi?id=2805))
* Other Pipelight-specific enhancements
* Port Royale doesn't display ocean correctly ([Wine Bug #17913](https://bugs.winehq.org/show_bug.cgi?id=17913))
* Prevent window managers from grouping all wine programs together ([Wine Bug #32699](https://bugs.winehq.org/show_bug.cgi?id=32699))
* Process APC calls before starting process
* Process Hacker 2.x needs ntoskrnl.ProbeForRead ([Wine Bug #38103](https://bugs.winehq.org/show_bug.cgi?id=38103))
* Properly handle closing sockets during a select call ([Wine Bug #38399](https://bugs.winehq.org/show_bug.cgi?id=38399))
* Python PIP needs better NtQueryInformationJobObject stub
* Recognize localhost as local machine in wbemprox
* Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates)
* Reset device state in SysKeyboard*Impl_Acquire ([Wine Bug #11607](https://bugs.winehq.org/show_bug.cgi?id=11607))
* Return an error when trying to open a terminated process ([Wine Bug #37087](https://bugs.winehq.org/show_bug.cgi?id=37087))
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](https://bugs.winehq.org/show_bug.cgi?id=23174))
* Return correct device type for cd devices without medium
* Return correct values for GetThreadTimes function ([Wine Bug #20230](https://bugs.winehq.org/show_bug.cgi?id=20230))
* Return default palette entries from GetSystemPaletteEntries for non-palette-based devices
* SO_CONNECT_TIME returns the appropriate time
* Scrolling causes mouse and screen to lock in Call to Power II ([Wine Bug #34559](https://bugs.winehq.org/show_bug.cgi?id=34559))
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](https://bugs.winehq.org/show_bug.cgi?id=35652))
* Set last error when GetRawInputDeviceList fails ([Wine Bug #37667](https://bugs.winehq.org/show_bug.cgi?id=37667))
* Show unmounted devices in winecfg and allow changing the unix path
* Skip unknown item when decoding a CMS certificate ([Wine Bug #34388](https://bugs.winehq.org/show_bug.cgi?id=34388))
* Software support for Environmental Audio Extensions (EAX)
* Super Mario 3: Mario Forever fails to load keyboard mapping from profile files. ([Wine Bug #18099](https://bugs.winehq.org/show_bug.cgi?id=18099))
* Support for 8bpp grayscale TIFF images with 8bpp alpha channel ([Wine Bug #38027](https://bugs.winehq.org/show_bug.cgi?id=38027))
@@ -221,7 +236,7 @@ for more details.*
* Support for D3DXGetShaderInputSemantics ([Wine Bug #22682](https://bugs.winehq.org/show_bug.cgi?id=22682))
* Support for DDS file format in D3DXSaveTextureToFileInMemory ([Wine Bug #26898](https://bugs.winehq.org/show_bug.cgi?id=26898))
* Support for DOS hidden/system file attributes ([Wine Bug #9158](https://bugs.winehq.org/show_bug.cgi?id=9158))
* Support for Dynamic DST (daylight saving time) information in registry
* Support for FileFsFullSizeInformation information class
* Support for GdipCreateRegionRgnData ([Wine Bug #34843](https://bugs.winehq.org/show_bug.cgi?id=34843))
* Support for GetFinalPathNameByHandle ([Wine Bug #34851](https://bugs.winehq.org/show_bug.cgi?id=34851))
* Support for GetSystemTimes ([Wine Bug #19813](https://bugs.winehq.org/show_bug.cgi?id=19813))
@@ -238,6 +253,7 @@ for more details.*
* Support for NVIDIA video encoder library (nvencodeapi)
* Support for NtQuerySection ([Wine Bug #37338](https://bugs.winehq.org/show_bug.cgi?id=37338))
* Support for NtSetInformationFile class FileDispositionInformation ([Wine Bug #30397](https://bugs.winehq.org/show_bug.cgi?id=30397))
* Support for ObjectTypeInformation class support in NtQueryObject
* Support for PulseAudio backend for audio ([Wine Bug #10495](https://bugs.winehq.org/show_bug.cgi?id=10495))
* Support for RtlDecompressBuffer ([Wine Bug #37449](https://bugs.winehq.org/show_bug.cgi?id=37449))
* Support for SHCreateSessionKey ([Wine Bug #35630](https://bugs.winehq.org/show_bug.cgi?id=35630))
@@ -257,6 +273,7 @@ for more details.*
* Try harder to get the host name address in getaddrinfo() ([Wine Bug #29609](https://bugs.winehq.org/show_bug.cgi?id=29609))
* Tumblebugs 2 requires DXTn software encoding support ([Wine Bug #29586](https://bugs.winehq.org/show_bug.cgi?id=29586))
* Update a XIM candidate position when cursor location changes ([Wine Bug #30938](https://bugs.winehq.org/show_bug.cgi?id=30938))
* Use POSIX implementation to enumerate directory content on FreeBSD ([Wine Bug #35397](https://bugs.winehq.org/show_bug.cgi?id=35397))
* Use actual program name if available to describe PulseAudio streams
* Use manual relay for RunDLL_CallEntry16 in shell32 ([Wine Bug #23033](https://bugs.winehq.org/show_bug.cgi?id=23033))
* Voobly expects correct handling of WRITECOPY memory protection ([Wine Bug #29384](https://bugs.winehq.org/show_bug.cgi?id=29384))

685
debian/changelog vendored

File diff suppressed because it is too large Load Diff

View File

@@ -32,9 +32,11 @@ usage()
echo "Configuration:"
echo " DESTDIR=path Specify the path to the wine source tree"
echo " --all Select all patches"
echo " --force-autoconf Run autoreconf and tools/make_requests after each patch"
echo " --help Display this help and exit"
echo " --no-patchlist Do not apply patchlist (needed for 'wine --patches')"
echo " --no-autoconf Do not run autoreconf and tools/make_requests"
echo " --version Show version information"
echo " -W patchset Exclude a specific patchset"
echo ""
echo "Backends:"
@@ -46,6 +48,17 @@ usage()
echo ""
}}
# Show version information
version()
{{
echo "Wine Staging {latest_staging_version}"
echo "Copyright (C) 2014-2015 the Wine Staging project authors."
echo ""
echo "Patchset to be applied on upstream Wine:"
echo " commit {latest_wine_commit}"
echo ""
}}
# Critical error, abort
abort()
{{
@@ -67,7 +80,6 @@ enable_patchlist=1
enable_autoconf=1
patchlist="/dev/null"
backend="patch"
enable=1
# Find location of patches
patchdir="$(dirname "$(readlink -f "$0")")"
@@ -85,16 +97,6 @@ if test "$#" -eq 0; then
fi
while test "$#" -gt 0; do
if patch_enable "$1" "$enable"; then
shift
enable=1
continue
fi
if test "$enable" -ne 1; then
abort "Wrong use of -W commandline argument, expected patchname."
fi
case "$1" in
DESTDIR=*)
DESTDIR="${{1#*=}}"
@@ -111,6 +113,11 @@ while test "$#" -gt 0; do
shift
;;
--force-autoconf)
enable_autoconf=2
shift
;;
--help)
usage
exit 0
@@ -126,21 +133,30 @@ while test "$#" -gt 0; do
shift
;;
--version)
version
exit 0
;;
-W)
enable=2
# Disable patchset
if ! patch_enable "$2" 2; then
abort "Wrong usage of -W commandline argument, expected patchname."
fi
shift
shift
;;
*)
abort "Unknown commandline argument $1"
exit 1
# Enable patchset
if ! patch_enable "$1" 1; then
abort "Unknown commandline argument $1."
fi
shift
;;
esac
done
if test "$enable" -ne 1; then
abort "Missing argument for -W, expected patchname."
fi
# Determine DESTDIR if not explicitly specified
if test -z "$DESTDIR" -a -f ./tools/make_requests; then
DESTDIR="$(pwd)"
@@ -154,6 +170,85 @@ if ! cd "$DESTDIR"; then
abort "Unable to change directory to $DESTDIR."
fi
# Helper to update configure / the wineserver protocol if required
if ! command -v diff >/dev/null 2>&1 ||
! command -v grep >/dev/null 2>&1 ||
! command -v cmp >/dev/null 2>&1; then
update_configure()
{{
autoreconf -f
}}
update_protocol()
{{
./tools/make_requests
}}
else
update_configure()
{{
_file="./configure"
if ! cp -a "$_file" "$_file.old"; then
abort "failed to create $_file.old"
fi
if ! autoreconf -f; then
rm "$_file.old"
unset _file
return 1
fi
# Shifting by 62 bits is undefined behaviour when off_t is 32-bit, see also
# https://launchpad.net/ubuntu/+source/autoconf/2.69-6 - the bug is still
# present in some other distros (including Archlinux).
_large_off_old="^#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))$"
_large_off_new="#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))"
sed -i'' -e "s|$_large_off_old|$_large_off_new|g" "$_file"
unset _large_off_old _large_off_new
# Restore original timestamp when nothing changed
if ! cmp "$_file.old" "$_file" >/dev/null; then
rm "$_file.old"
else
mv "$_file.old" "$_file"
fi
unset _file
return 0
}}
update_protocol()
{{
_file="./include/wine/server_protocol.h"
if ! cp -a "$_file" "$_file.old"; then
abort "failed to create $_file.old"
fi
if ! ./tools/make_requests; then
rm "$_file.old"
unset _file
return 1
fi
# Restore original timestamp when nothing changed
if diff -u "$_file.old" "$_file" |
grep -v "^[+-]#define SERVER_PROTOCOL_VERSION" |
grep -v "^\(+++\|---\)" | grep -q "^[+-]"; then
rm "$_file.old"
else
mv "$_file.old" "$_file"
fi
unset _file
return 0
}}
fi
# Most backends will try to use git, either directly or indirectly.
# Unfortunately this does not work when "$DESTDIR" points to a
# subdirectory of a git tree, which has the effect that no patches
@@ -172,7 +267,12 @@ if test "$backend" = "patch"; then
gitapply_args=""
fi
patch_apply_file ()
if test "$enable_autoconf" -gt 1; then
warning "Ignoring commandline argument --force-autoconf."
enable_autoconf=1
fi
patch_apply_file()
{{
echo "Applying $1"
if ! "$patchdir/gitapply.sh" $gitapply_args < "$1"; then
@@ -196,18 +296,25 @@ elif test "$backend" = "epatch"; then
abort "Shell functions epatch/ebegin/eend not found. You have to source this script from your ebuild."
fi
patch_apply_file ()
if test "$enable_autoconf" -gt 1; then
warning "Ignoring commandline argument --force-autoconf."
enable_autoconf=1
fi
patch_apply_file()
{{
shortname="$(basename "$1")"
_shortname="$(basename "$1")"
if grep -q "^GIT binary patch" "$1"; then
ebegin "Applying $shortname"
"$patchdir/gitapply.sh" $gitapply_args < "$1" || \
ebegin "Applying $_shortname"
if ! "$patchdir/gitapply.sh" $gitapply_args < "$1"; then
die "Failed Patch: $1!"
fi
eend
else
epatch "$1" # epatch calls die upon failure
fi
unset _shortname
}}
# GIT backend - apply patches using 'git am'
@@ -217,12 +324,44 @@ elif test "$backend" = "git" -o "$backend" = "git-am"; then
abort "Backend 'git-am' not possible when DESTDIR points to a git subdirectory."
fi
patch_apply_file ()
patch_apply_file()
{{
echo "Applying $1"
if ! git am "$1"; then
abort "Failed to apply patch, aborting!"
fi
if test "$enable_autoconf" -gt 1; then
_do_commit=0
# Run 'autoreconf -f' if required
if git show --pretty=format: --name-only | grep -q "^\(configure.ac\|aclocal.m4\)$"; then
if ! update_configure; then
abort "'autoreconf -f' failed."
fi
git add ./configure
git add ./include/config.h.in
_do_commit=1
fi
# Run './tools/make_requests' if required
if git show --pretty=format: --name-only | grep -q "^server/"; then
if ! update_protocol; then
abort "'./tools/make_requests' failed."
fi
git add ./include/wine/server_protocol.h
git add ./server/trace.c
git add ./server/request.h
_do_commit=1
fi
if test "$_do_commit" -ne 0; then
if ! git commit --amend --reuse-message HEAD; then
abort "Failed to include autogenerated changes in commit."
fi
fi
unset _do_commit
fi
}}
# Git apply backend
@@ -232,7 +371,12 @@ elif test "$backend" = "git-apply"; then
abort "Backend 'git-apply' not possible when DESTDIR points to a git subdirectory."
fi
patch_apply_file ()
if test "$enable_autoconf" -gt 1; then
warning "Ignoring commandline argument --force-autoconf."
enable_autoconf=1
fi
patch_apply_file()
{{
echo "Applying $1"
if ! git apply "$1"; then
@@ -252,20 +396,21 @@ elif test "$backend" = "stg"; then
enable_patchlist=0
enable_autoconf=0
patch_apply_file ()
patch_apply_file()
{{
echo "Applying $1"
shortname="$(basename "$1")"
if ! echo "staging/$shortname" | cat - "$1" | stg import; then
_shortname="$(basename "$1")"
if ! echo "staging/$_shortname" | cat - "$1" | stg import; then
abort "Failed to apply patch, aborting!"
fi
unset _shortname
}}
else
abort "Selected backend $backend not supported."
fi
patch_apply ()
patch_apply()
{{
patch_apply_file "$patchdir/$1"
}}
@@ -337,13 +482,12 @@ EOF
fi
if test "$enable_autoconf" -eq 1; then
if ! autoreconf -f; then
if ! update_configure; then
abort "'autoreconf -f' failed."
fi
if ! ./tools/make_requests; then
if ! update_protocol; then
abort "'./tools/make_requests' failed."
fi
fi
# Success
exit 0

View File

@@ -43,8 +43,9 @@ import xml.dom.minidom
_devnull = open(os.devnull, 'wb')
# Cached information to speed up patch dependency checks
latest_wine_commit = None
cached_patch_result = {}
latest_wine_commit = None
latest_staging_version = None
cached_patch_result = {}
class config(object):
path_cache = ".patchupdate.cache"
@@ -74,6 +75,7 @@ class PatchSet(object):
self.changes = []
self.disabled = False
self.ifdefined = None
self.categories = []
self.files = []
self.patches = []
@@ -176,11 +178,13 @@ def _read_changelog():
r = re.match("^([a-zA-Z0-9][^(]*)\((.*)\) ([^;]*)", line)
if r: yield (r.group(1).strip(), r.group(2).strip(), r.group(3).strip())
def _stable_compholio_version():
def _latest_staging_version(only_stable=False):
"""Get version number of the latest stable release."""
for package, version, distro in _read_changelog():
if distro.lower() != "unreleased":
return version
elif not only_stable:
return "%s (unreleased)" % version
def _latest_wine_commit(commit=None):
"""Get latest wine commit."""
@@ -188,7 +192,7 @@ def _latest_wine_commit(commit=None):
raise PatchUpdaterError("Please create a symlink to the wine repository in %s" % config.path_wine)
if commit is None:
commit = subprocess.check_output(["git", "rev-parse", "origin/master"], cwd=config.path_wine).strip()
assert len(commit) == 40
assert len(commit) == 40 and commit == commit.lower()
return commit
def enum_directories(revision, path):
@@ -230,6 +234,7 @@ def read_patchset(revision = None):
all_patches = {}
name_to_id = {}
all_bugids = set()
categories = {}
# Read in sorted order (to ensure created Makefile doesn't change too much)
for name, directory in sorted(enum_directories(revision, config.path_patches)):
@@ -294,6 +299,12 @@ def read_patchset(revision = None):
if i != j and any([fnmatch.fnmatch(f, val) for f in other_patch.modified_files]):
patch.auto_depends.add(j)
elif key == "category":
val = "category-%s" % val
if name_to_id.has_key(val):
raise PatchUpdaterError("Category name in definition file %s collides with patchset %s" % (filename, val))
patch.categories.append(val)
elif key == "fixes":
r = re.match("^[0-9]+$", val)
if r:
@@ -318,6 +329,23 @@ def read_patchset(revision = None):
elif revision is None:
print "WARNING: Ignoring unknown command in definition file %s: %s" % (filename, line)
# If patch is not disabled then finally add it to the category
if not patch.disabled:
for category in patch.categories:
if not categories.has_key(category):
categories[category] = set()
categories[category].add(i)
# Add virtual targets for all the categories
for category, indices in categories.iteritems():
patch = PatchSet(category, directory)
patch.depends = indices
i = next(unique_id)
all_patches[i] = patch
name_to_id[name] = i
# To simplify the task of keeping the bug list up-to-date, list all bugs
# which might require attention.
if revision is None:
@@ -628,6 +656,11 @@ def generate_script(all_patches):
# Generate code for applying all patchsets
lines = []
for i, patch in [(i, all_patches[i]) for i in resolved]:
# Categories do not have any files associated, so just skip over
if len(patch.files) == 0:
continue
lines.append("# Patchset %s\n" % patch.name)
lines.append("# |\n")
@@ -658,14 +691,16 @@ def generate_script(all_patches):
with open(config.path_template_script) as template_fp:
template = template_fp.read()
with open(config.path_script, "w") as fp:
fp.write(template.format(patch_helpers="".join(lines_helpers).rstrip("\n"),
fp.write(template.format(latest_staging_version=_latest_staging_version(),
latest_wine_commit=latest_wine_commit,
patch_helpers="".join(lines_helpers).rstrip("\n"),
patch_resolver="".join(lines_resolver).rstrip("\n"),
patch_apply="".join(lines_apply).rstrip("\n")))
# Add changes to git
subprocess.call(["git", "add", config.path_script])
def generate_markdown(all_patches, stable_patches, stable_compholio_version):
def generate_markdown(all_patches, stable_patches):
"""Generate README.md including information about specific patches and bugfixes."""
def _format_bug(mode, bugid, bugname):
@@ -711,7 +746,7 @@ def generate_markdown(all_patches, stable_patches, stable_compholio_version):
lines.append(_format_bug(mode, bugid, bugname))
lines.append("")
lines.append("")
lines.append("**Bug fixes and features in Wine Staging %s [%d]:**" % (stable_compholio_version, len(old_fixes)))
lines.append("**Bug fixes and features in Wine Staging %s [%d]:**" % (latest_staging_version, len(old_fixes)))
lines.append("")
lines.append("*Note: The following list only contains features and bug fixes which are not")
lines.append("yet available in vanilla Wine. They are removed from the list as soon as they")
@@ -732,6 +767,25 @@ def generate_markdown(all_patches, stable_patches, stable_compholio_version):
# Add changes to git
subprocess.call(["git", "add", config.path_README_md])
def wrap_changelog():
lines = []
with open(config.path_changelog) as fp:
for line in fp:
if line.startswith(" *") and len(line.rstrip("\n")) > 80:
wrapped = textwrap.wrap(line[3:].strip(), 80 - 4)
lines.append(" * %s\n" % "\n ".join(wrapped))
else:
lines.append(line)
with open(config.path_changelog, "w") as fp:
for line in lines:
fp.write(line)
# Add changes to git
subprocess.call(["git", "add", config.path_changelog])
if __name__ == "__main__":
# Hack to avoid KeyboardInterrupts on different threads
@@ -742,17 +796,18 @@ if __name__ == "__main__":
try:
# Get information about Wine and Compholio version
# Get information about Wine and Staging version
latest_wine_commit = _latest_wine_commit(sys.argv[1] if len(sys.argv) >= 2 else None)
stable_compholio_version = _stable_compholio_version()
latest_staging_version = _latest_staging_version(only_stable=True)
# Read current and stable patches
all_patches = read_patchset()
stable_patches = read_patchset(revision="v%s" % stable_compholio_version)
stable_patches = read_patchset(revision="v%s" % latest_staging_version)
generate_ifdefined(all_patches)
generate_script(all_patches)
generate_markdown(all_patches, stable_patches, stable_compholio_version)
generate_markdown(all_patches, stable_patches)
wrap_changelog()
except PatchUpdaterError as e:
print ""

View File

@@ -0,0 +1 @@
Category: stable

View File

@@ -0,0 +1 @@
Category: stable

View File

@@ -0,0 +1,75 @@
From a996ccc06eebf03b706e28c3af277901b5074e37 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 30 Apr 2015 01:37:44 +0200
Subject: advapi32: Add stub for ImpersonateAnonymousToken.
---
dlls/advapi32/advapi32.spec | 2 +-
dlls/advapi32/security.c | 10 ++++++++++
.../api-ms-win-security-base-l1-1-0.spec | 2 +-
.../api-ms-win-security-base-l1-2-0.spec | 2 +-
4 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec
index e7b7cf7..9fdd266 100644
--- a/dlls/advapi32/advapi32.spec
+++ b/dlls/advapi32/advapi32.spec
@@ -375,7 +375,7 @@
@ stub I_ScSetServiceBitsA
# @ stub I_ScSetServiceBitsW
# @ stub IdentifyCodeAuthzLevelW
-# @ stub ImpersonateAnonymousToken
+@ stdcall ImpersonateAnonymousToken(long)
@ stdcall ImpersonateLoggedOnUser(long)
@ stdcall ImpersonateNamedPipeClient(long)
@ stdcall ImpersonateSelf(long)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index d27b2e7..de3c82e 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -2501,6 +2501,16 @@ BOOL WINAPI ImpersonateLoggedOnUser(HANDLE hToken)
}
/******************************************************************************
+ * ImpersonateAnonymousToken [ADVAPI32.@]
+ */
+BOOL WINAPI ImpersonateAnonymousToken(HANDLE hThread)
+{
+ FIXME("(%p)\n", hThread);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+/******************************************************************************
* AccessCheck [ADVAPI32.@]
*/
BOOL WINAPI
diff --git a/dlls/api-ms-win-security-base-l1-1-0/api-ms-win-security-base-l1-1-0.spec b/dlls/api-ms-win-security-base-l1-1-0/api-ms-win-security-base-l1-1-0.spec
index 548ae83..4277706 100644
--- a/dlls/api-ms-win-security-base-l1-1-0/api-ms-win-security-base-l1-1-0.spec
+++ b/dlls/api-ms-win-security-base-l1-1-0/api-ms-win-security-base-l1-1-0.spec
@@ -58,7 +58,7 @@
@ stdcall GetSidSubAuthorityCount(ptr) advapi32.GetSidSubAuthorityCount
@ stdcall GetTokenInformation(long long ptr long ptr) advapi32.GetTokenInformation
@ stub GetWindowsAccountDomainSid
-@ stub ImpersonateAnonymousToken
+@ stdcall ImpersonateAnonymousToken(long) advapi32.ImpersonateAnonymousToken
@ stdcall ImpersonateLoggedOnUser(long) advapi32.ImpersonateLoggedOnUser
@ stdcall ImpersonateSelf(long) advapi32.ImpersonateSelf
@ stdcall InitializeAcl(ptr long long) advapi32.InitializeAcl
diff --git a/dlls/api-ms-win-security-base-l1-2-0/api-ms-win-security-base-l1-2-0.spec b/dlls/api-ms-win-security-base-l1-2-0/api-ms-win-security-base-l1-2-0.spec
index d268183..3adef23 100644
--- a/dlls/api-ms-win-security-base-l1-2-0/api-ms-win-security-base-l1-2-0.spec
+++ b/dlls/api-ms-win-security-base-l1-2-0/api-ms-win-security-base-l1-2-0.spec
@@ -64,7 +64,7 @@
@ stdcall GetSidSubAuthorityCount(ptr) advapi32.GetSidSubAuthorityCount
@ stdcall GetTokenInformation(long long ptr long ptr) advapi32.GetTokenInformation
@ stub GetWindowsAccountDomainSid
-@ stub ImpersonateAnonymousToken
+@ stdcall ImpersonateAnonymousToken(long) advapi32.ImpersonateAnonymousToken
@ stdcall ImpersonateLoggedOnUser(long) advapi32.ImpersonateLoggedOnUser
@ stdcall ImpersonateSelf(long) advapi32.ImpersonateSelf
@ stdcall InitializeAcl(ptr long long) advapi32.InitializeAcl
--
2.4.0

View File

@@ -0,0 +1 @@
Fixes: Add stub for advapi32.ImpersonateAnonymousToken

View File

@@ -1,14 +1,14 @@
From 9a19e77a0334f91e370e73099066484f20b24321 Mon Sep 17 00:00:00 2001
From 616c17cc58a4943d3a367704943e737d5713740d Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 7 Apr 2015 11:23:34 +0800
Subject: advapi32: Fallback to Sid string when LookupAccountSid fails.
---
dlls/advapi32/lsa.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
dlls/advapi32/lsa.c | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index 258b8ca..2b2c6b6 100644
index 258b8ca..93afa20 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -29,6 +29,7 @@
@@ -41,7 +41,7 @@ index 258b8ca..2b2c6b6 100644
}
/* now we have full length needed for both */
@@ -593,6 +609,20 @@ NTSTATUS WINAPI LsaLookupSids(
@@ -593,6 +609,21 @@ NTSTATUS WINAPI LsaLookupSids(
heap_free(domain.Buffer);
}
}
@@ -52,6 +52,7 @@ index 258b8ca..2b2c6b6 100644
+ if (ConvertSidToStringSidW(Sids[i], &strsid))
+ {
+ name_size = strlenW(strsid) + 1;
+ mapped++;
+
+ (*Names)[i].Name.Buffer = name_buffer;
+ memcpy((*Names)[i].Name.Buffer, strsid, name_size * sizeof(WCHAR));

View File

@@ -0,0 +1,95 @@
From f0290aad953e988b1a15e214ecfc57f21dc136af Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 28 Apr 2015 23:28:50 +0800
Subject: advapi32/tests: Test prefix and use of TokenPrimaryGroup Sid.
---
dlls/advapi32/tests/security.c | 35 ++++++++++++++++++++++++++++++-----
1 file changed, 30 insertions(+), 5 deletions(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index f3fc682..6a716d6 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -2514,19 +2514,21 @@ static void test_granted_access(HANDLE handle, ACCESS_MASK access,
static void test_process_security(void)
{
BOOL res;
+ PTOKEN_USER user;
PTOKEN_OWNER owner;
PTOKEN_PRIMARY_GROUP group;
- PSID AdminSid = NULL, UsersSid = NULL;
+ PSID AdminSid = NULL, UsersSid = NULL, UserSid = NULL;
PACL Acl = NULL, ThreadAcl = NULL;
SECURITY_DESCRIPTOR *SecurityDescriptor = NULL, *ThreadSecurityDescriptor = NULL;
- char buffer[MAX_PATH];
+ char buffer[MAX_PATH], account[MAX_PATH], domain[MAX_PATH];
PROCESS_INFORMATION info;
STARTUPINFOA startup;
SECURITY_ATTRIBUTES psa, tsa;
HANDLE token, event;
- DWORD size;
+ DWORD size, acc_size, dom_size, ret;
SID_IDENTIFIER_AUTHORITY SIDAuthWorld = { SECURITY_WORLD_SID_AUTHORITY };
PSID EveryoneSid = NULL;
+ SID_NAME_USE use;
Acl = HeapAlloc(GetProcessHeap(), 0, 256);
res = InitializeAcl(Acl, 256, ACL_REVISION);
@@ -2558,7 +2560,8 @@ static void test_process_security(void)
owner = HeapAlloc(GetProcessHeap(), 0, size);
res = GetTokenInformation( token, TokenOwner, owner, size, &size );
ok(res, "GetTokenInformation failed with error %d\n", GetLastError());
- AdminSid = ((TOKEN_OWNER*)owner)->Owner;
+ AdminSid = owner->Owner;
+ test_sid_str(AdminSid);
res = GetTokenInformation( token, TokenPrimaryGroup, NULL, 0, &size );
ok(!res, "Expected failure, got %d\n", res);
@@ -2568,13 +2571,34 @@ static void test_process_security(void)
group = HeapAlloc(GetProcessHeap(), 0, size);
res = GetTokenInformation( token, TokenPrimaryGroup, group, size, &size );
ok(res, "GetTokenInformation failed with error %d\n", GetLastError());
- UsersSid = ((TOKEN_PRIMARY_GROUP*)group)->PrimaryGroup;
+ UsersSid = group->PrimaryGroup;
+ test_sid_str(UsersSid);
+
+ acc_size = sizeof(account);
+ dom_size = sizeof(domain);
+ ret = LookupAccountSidA( NULL, UsersSid, account, &acc_size, domain, &dom_size, &use );
+ ok(ret, "LookupAccountSid failed with %d\n", ret);
+ todo_wine ok(use == SidTypeGroup, "expect SidTypeGroup, got %d\n", use);
+ todo_wine ok(!strcmp(account, "None"), "expect None, got %s\n", account);
+
+ res = GetTokenInformation( token, TokenUser, NULL, 0, &size );
+ ok(!res, "Expected failure, got %d\n", res);
+ ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
+ "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
+
+ user = HeapAlloc(GetProcessHeap(), 0, size);
+ res = GetTokenInformation( token, TokenUser, user, size, &size );
+ ok(res, "GetTokenInformation failed with error %d\n", GetLastError());
+ UserSid = user->User.Sid;
+ test_sid_str(UserSid);
+ todo_wine ok(EqualPrefixSid(UsersSid, UserSid), "TokenPrimaryGroup Sid and TokenUser Sid don't match.\n");
CloseHandle( token );
if (!res)
{
HeapFree(GetProcessHeap(), 0, group);
HeapFree(GetProcessHeap(), 0, owner);
+ HeapFree(GetProcessHeap(), 0, user);
HeapFree(GetProcessHeap(), 0, Acl);
return;
}
@@ -2681,6 +2705,7 @@ static void test_process_security(void)
CloseHandle( event );
HeapFree(GetProcessHeap(), 0, group);
HeapFree(GetProcessHeap(), 0, owner);
+ HeapFree(GetProcessHeap(), 0, user);
HeapFree(GetProcessHeap(), 0, Acl);
HeapFree(GetProcessHeap(), 0, SecurityDescriptor);
HeapFree(GetProcessHeap(), 0, ThreadAcl);
--
2.3.5

View File

@@ -0,0 +1,38 @@
From 5487b4720e24aaa7a10719fc36bc23c851a48a9b Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 28 Apr 2015 22:35:26 +0800
Subject: server: Create primary group using DOMAIN_GROUP_RID_USERS.
---
dlls/advapi32/tests/security.c | 2 +-
server/token.c | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 25b34ba4..573119f 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -2591,7 +2591,7 @@ static void test_process_security(void)
ok(res, "GetTokenInformation failed with error %d\n", GetLastError());
UserSid = user->User.Sid;
test_sid_str(UserSid);
- todo_wine ok(EqualPrefixSid(UsersSid, UserSid), "TokenPrimaryGroup Sid and TokenUser Sid don't match.\n");
+ ok(EqualPrefixSid(UsersSid, UserSid), "TokenPrimaryGroup Sid and TokenUser Sid don't match.\n");
CloseHandle( token );
if (!res)
diff --git a/server/token.c b/server/token.c
index e57cbc6..be8c53b 100644
--- a/server/token.c
+++ b/server/token.c
@@ -695,6 +695,7 @@ struct token *token_create_admin( void )
{ security_local_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
{ security_interactive_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
{ security_authenticated_user_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
+ { security_domain_users_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY|SE_GROUP_OWNER },
{ alias_admins_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY|SE_GROUP_OWNER },
{ alias_users_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY },
{ logon_sid, SE_GROUP_ENABLED|SE_GROUP_ENABLED_BY_DEFAULT|SE_GROUP_MANDATORY|SE_GROUP_LOGON_ID },
--
2.3.5

View File

@@ -0,0 +1,53 @@
From 83517396c266c2de290670128d678770f5d79cc9 Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 28 Apr 2015 23:00:08 +0800
Subject: advapi32: Fix name and use of DOMAIN_GROUP_RID_USERS.
---
dlls/advapi32/security.c | 7 +++++--
dlls/advapi32/tests/security.c | 4 ++--
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index d27b2e7..2362dd5 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -191,7 +191,7 @@ static const WCHAR Domain_Admins[] = { 'D','o','m','a','i','n',' ','A','d','m','
static const WCHAR Domain_Computers[] = { 'D','o','m','a','i','n',' ','C','o','m','p','u','t','e','r','s',0 };
static const WCHAR Domain_Controllers[] = { 'D','o','m','a','i','n',' ','C','o','n','t','r','o','l','l','e','r','s',0 };
static const WCHAR Domain_Guests[] = { 'D','o','m','a','i','n',' ','G','u','e','s','t','s',0 };
-static const WCHAR Domain_Users[] = { 'D','o','m','a','i','n',' ','U','s','e','r','s',0 };
+static const WCHAR None[] = { 'N','o','n','e',0 };
static const WCHAR Enterprise_Admins[] = { 'E','n','t','e','r','p','r','i','s','e',' ','A','d','m','i','n','s',0 };
static const WCHAR ENTERPRISE_DOMAIN_CONTROLLERS[] = { 'E','N','T','E','R','P','R','I','S','E',' ','D','O','M','A','I','N',' ','C','O','N','T','R','O','L','L','E','R','S',0 };
static const WCHAR Everyone[] = { 'E','v','e','r','y','o','n','e',0 };
@@ -2206,7 +2206,10 @@ LookupAccountSidW(
ac = Domain_Admins;
break;
case DOMAIN_GROUP_RID_USERS:
- ac = Domain_Users;
+ /* MSDN says the name of DOMAIN_GROUP_RID_USERS is Domain Users,
+ * tests show that MSDN seems to be wrong. */
+ ac = None;
+ use = 2;
break;
case DOMAIN_GROUP_RID_GUESTS:
ac = Domain_Guests;
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 573119f..490ce26 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -2578,8 +2578,8 @@ static void test_process_security(void)
dom_size = sizeof(domain);
ret = LookupAccountSidA( NULL, UsersSid, account, &acc_size, domain, &dom_size, &use );
ok(ret, "LookupAccountSid failed with %d\n", ret);
- todo_wine ok(use == SidTypeGroup, "expect SidTypeGroup, got %d\n", use);
- todo_wine ok(!strcmp(account, "None"), "expect None, got %s\n", account);
+ ok(use == SidTypeGroup, "expect SidTypeGroup, got %d\n", use);
+ ok(!strcmp(account, "None"), "expect None, got %s\n", account);
res = GetTokenInformation( token, TokenUser, NULL, 0, &size );
ok(!res, "Expected failure, got %d\n", res);
--
2.3.5

View File

@@ -0,0 +1,2 @@
Depends: server-Misc_ACL
Depends: server-CreateProcess_ACLs

View File

@@ -0,0 +1,28 @@
From 0f3d7e07b53bd1a7c8735bb2c0fa3da0b75dcb96 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 8 May 2015 21:53:30 +0200
Subject: advapi32: Fix error handling in OpenSCManagerW.
---
dlls/advapi32/service.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c
index 0eb0a47..111009d 100644
--- a/dlls/advapi32/service.c
+++ b/dlls/advapi32/service.c
@@ -868,8 +868,9 @@ SC_HANDLE WINAPI OpenSCManagerW( LPCWSTR lpMachineName, LPCWSTR lpDatabaseName,
DWORD r;
r = SERV_OpenSCManagerW(lpMachineName, lpDatabaseName, dwDesiredAccess, &handle);
- if (r!=ERROR_SUCCESS)
- SetLastError(r);
+
+ /* last error could still be ERROR_MORE_DATA, so set error unconditionally */
+ SetLastError(r);
return handle;
}
--
2.4.0

View File

@@ -0,0 +1 @@
Category: stable

View File

@@ -0,0 +1,100 @@
From d36d6e9c52001d6b2fd7ff5be98cfc1aca650694 Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Wed, 16 Apr 2014 14:45:53 +0800
Subject: atl: Added stub AtlIPersistPropertyBag_Save.
---
dlls/atl/atl.c | 7 +++++++
dlls/atl/atl.spec | 2 +-
dlls/atl100/atl100.spec | 2 +-
dlls/atl110/atl110.spec | 2 +-
dlls/atl80/atl80.spec | 2 +-
dlls/atl90/atl90.spec | 2 +-
6 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/dlls/atl/atl.c b/dlls/atl/atl.c
index 795ca9b..84c81f9 100644
--- a/dlls/atl/atl.c
+++ b/dlls/atl/atl.c
@@ -285,6 +285,13 @@ HRESULT WINAPI AtlIPersistPropertyBag_Load(LPPROPERTYBAG pPropBag, LPERRORLOG pE
return S_OK;
}
+HRESULT WINAPI AtlIPersistPropertyBag_Save(LPPROPERTYBAG pPropBag, int unknown1, int unknown2,
+ ATL_PROPMAP_ENTRY *pMap, void *pThis, IUnknown *pUnk)
+{
+ FIXME("(%p, %x, %x, %p, %p, %p)\n", pPropBag, unknown1, unknown2, pMap, pThis, pUnk);
+
+ return S_OK;
+}
/***********************************************************************
* AtlModuleAddTermFunc [atl100.@]
*/
diff --git a/dlls/atl/atl.spec b/dlls/atl/atl.spec
index aa0f44b..466f07a 100644
--- a/dlls/atl/atl.spec
+++ b/dlls/atl/atl.spec
@@ -44,7 +44,7 @@
50 stdcall AtlIPersistStreamInit_Load(ptr ptr ptr ptr)
51 stdcall AtlIPersistStreamInit_Save(ptr long ptr ptr ptr)
52 stdcall AtlIPersistPropertyBag_Load(ptr ptr ptr ptr ptr)
-53 stub AtlIPersistPropertyBag_Save
+53 stdcall AtlIPersistPropertyBag_Save(ptr long long ptr ptr)
54 stdcall AtlGetObjectSourceInterface(ptr ptr ptr ptr ptr)
55 stub AtlModuleUnRegisterTypeLib
56 stdcall AtlModuleLoadTypeLib(ptr wstr ptr ptr)
diff --git a/dlls/atl100/atl100.spec b/dlls/atl100/atl100.spec
index 25fad3d..80b4b16 100644
--- a/dlls/atl100/atl100.spec
+++ b/dlls/atl100/atl100.spec
@@ -36,7 +36,7 @@
50 stdcall AtlIPersistStreamInit_Load(ptr ptr ptr ptr)
51 stdcall AtlIPersistStreamInit_Save(ptr long ptr ptr ptr)
52 stdcall AtlIPersistPropertyBag_Load(ptr ptr ptr ptr ptr)
-53 stub AtlIPersistPropertyBag_Save
+53 stdcall AtlIPersistPropertyBag_Save(ptr long long ptr ptr ptr)
54 stdcall AtlGetObjectSourceInterface(ptr ptr ptr ptr ptr)
56 stdcall AtlLoadTypeLib(long wstr ptr ptr)
58 stdcall AtlModuleAddTermFunc(ptr ptr long)
diff --git a/dlls/atl110/atl110.spec b/dlls/atl110/atl110.spec
index 25fad3d..80b4b16 100644
--- a/dlls/atl110/atl110.spec
+++ b/dlls/atl110/atl110.spec
@@ -36,7 +36,7 @@
50 stdcall AtlIPersistStreamInit_Load(ptr ptr ptr ptr)
51 stdcall AtlIPersistStreamInit_Save(ptr long ptr ptr ptr)
52 stdcall AtlIPersistPropertyBag_Load(ptr ptr ptr ptr ptr)
-53 stub AtlIPersistPropertyBag_Save
+53 stdcall AtlIPersistPropertyBag_Save(ptr long long ptr ptr ptr)
54 stdcall AtlGetObjectSourceInterface(ptr ptr ptr ptr ptr)
56 stdcall AtlLoadTypeLib(long wstr ptr ptr)
58 stdcall AtlModuleAddTermFunc(ptr ptr long)
diff --git a/dlls/atl80/atl80.spec b/dlls/atl80/atl80.spec
index f313944..e82fba0 100644
--- a/dlls/atl80/atl80.spec
+++ b/dlls/atl80/atl80.spec
@@ -38,7 +38,7 @@
50 stdcall AtlIPersistStreamInit_Load(ptr ptr ptr ptr)
51 stdcall AtlIPersistStreamInit_Save(ptr long ptr ptr ptr)
52 stdcall AtlIPersistPropertyBag_Load(ptr ptr ptr ptr ptr)
-53 stub AtlIPersistPropertyBag_Save
+53 stdcall AtlIPersistPropertyBag_Save(ptr long long ptr ptr ptr)
54 stdcall AtlGetObjectSourceInterface(ptr ptr ptr ptr ptr)
55 stub AtlUnRegisterTypeLib
56 stdcall AtlLoadTypeLib(long wstr ptr ptr)
diff --git a/dlls/atl90/atl90.spec b/dlls/atl90/atl90.spec
index 25fad3d..80b4b16 100644
--- a/dlls/atl90/atl90.spec
+++ b/dlls/atl90/atl90.spec
@@ -36,7 +36,7 @@
50 stdcall AtlIPersistStreamInit_Load(ptr ptr ptr ptr)
51 stdcall AtlIPersistStreamInit_Save(ptr long ptr ptr ptr)
52 stdcall AtlIPersistPropertyBag_Load(ptr ptr ptr ptr ptr)
-53 stub AtlIPersistPropertyBag_Save
+53 stdcall AtlIPersistPropertyBag_Save(ptr long long ptr ptr ptr)
54 stdcall AtlGetObjectSourceInterface(ptr ptr ptr ptr ptr)
56 stdcall AtlLoadTypeLib(long wstr ptr ptr)
58 stdcall AtlModuleAddTermFunc(ptr ptr long)
--
2.3.7

View File

@@ -0,0 +1,2 @@
Fixes: [33888] Add stub for atl80.AtlIPersistPropertyBag_Save
Category: stable

View File

@@ -0,0 +1,123 @@
From 49050987e49d61420d2d46dc167551ff439a537a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 13 May 2015 01:31:35 +0200
Subject: browseui: Add IEnumString stub interface for ACLShellSource.
---
dlls/browseui/aclsource.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+)
diff --git a/dlls/browseui/aclsource.c b/dlls/browseui/aclsource.c
index 07033cc..bb98b33 100644
--- a/dlls/browseui/aclsource.c
+++ b/dlls/browseui/aclsource.c
@@ -44,6 +44,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(browseui);
typedef struct tagACLMulti {
IACList2 IACList2_iface;
+ IEnumString IEnumString_iface;
LONG refCount;
DWORD dwOptions;
} ACLShellSource;
@@ -53,6 +54,11 @@ static inline ACLShellSource *impl_from_IACList2(IACList2 *iface)
return CONTAINING_RECORD(iface, ACLShellSource, IACList2_iface);
}
+static inline ACLShellSource *impl_from_IEnumString(IEnumString *iface)
+{
+ return CONTAINING_RECORD(iface, ACLShellSource, IEnumString_iface);
+}
+
static void ACLShellSource_Destructor(ACLShellSource *This)
{
TRACE("destroying %p\n", This);
@@ -69,6 +75,10 @@ static HRESULT WINAPI ACLShellSource_QueryInterface(IACList2 *iface, REFIID iid,
{
*ppvOut = &This->IACList2_iface;
}
+ else if(IsEqualIID(iid, &IID_IEnumString))
+ {
+ *ppvOut = &This->IEnumString_iface;
+ }
if (*ppvOut)
{
@@ -133,6 +143,67 @@ static const IACList2Vtbl ACLMulti_ACList2Vtbl =
ACLShellSource_GetOptions
};
+static HRESULT WINAPI ACLShellSource_IEnumString_QueryInterface(IEnumString *iface, REFIID iid, LPVOID *ppvOut)
+{
+ ACLShellSource *This = impl_from_IEnumString(iface);
+ return ACLShellSource_QueryInterface(&This->IACList2_iface, iid, ppvOut);
+}
+
+static ULONG WINAPI ACLShellSource_IEnumString_AddRef(IEnumString *iface)
+{
+ ACLShellSource *This = impl_from_IEnumString(iface);
+ return ACLShellSource_AddRef(&This->IACList2_iface);
+}
+
+static ULONG WINAPI ACLShellSource_IEnumString_Release(IEnumString *iface)
+{
+ ACLShellSource *This = impl_from_IEnumString(iface);
+ return ACLShellSource_Release(&This->IACList2_iface);
+}
+
+static HRESULT WINAPI ACLShellSource_IEnumString_Next(IEnumString *iface, ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched)
+{
+ FIXME("(%p, %d, %p, %p): stub\n", iface, celt, rgelt, pceltFetched);
+
+ if (celt)
+ *rgelt = NULL;
+ if (pceltFetched)
+ *pceltFetched = 0;
+
+ return S_FALSE;
+}
+
+static HRESULT WINAPI ACLShellSource_IEnumString_Reset(IEnumString *iface)
+{
+ FIXME("(%p): stub\n", iface);
+ return S_OK;
+}
+
+static HRESULT WINAPI ACLShellSource_IEnumString_Skip(IEnumString *iface, ULONG celt)
+{
+ FIXME("(%p, %u): stub\n", iface, celt);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ACLShellSource_IEnumString_Clone(IEnumString *iface, IEnumString **ppOut)
+{
+ FIXME("(%p, %p): stub\n", iface, ppOut);
+ *ppOut = NULL;
+ return E_OUTOFMEMORY;
+}
+
+static const IEnumStringVtbl ACLShellSource_EnumStringVtbl =
+{
+ ACLShellSource_IEnumString_QueryInterface,
+ ACLShellSource_IEnumString_AddRef,
+ ACLShellSource_IEnumString_Release,
+
+ ACLShellSource_IEnumString_Next,
+ ACLShellSource_IEnumString_Skip,
+ ACLShellSource_IEnumString_Reset,
+ ACLShellSource_IEnumString_Clone
+};
+
HRESULT ACLShellSource_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
{
ACLShellSource *This;
@@ -144,6 +215,7 @@ HRESULT ACLShellSource_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut)
return E_OUTOFMEMORY;
This->IACList2_iface.lpVtbl = &ACLMulti_ACList2Vtbl;
+ This->IEnumString_iface.lpVtbl = &ACLShellSource_EnumStringVtbl;
This->refCount = 1;
TRACE("returning %p\n", This);
--
2.4.0

View File

@@ -0,0 +1 @@
Fixes: [18019] Add IEnumString stub interface for ACLShellSource

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