Added patch to store IOCS data in a property instead of GWLP_USERDATA.

This commit is contained in:
Erich E. Hoover 2014-07-26 15:18:59 -06:00
parent 9af0621843
commit bca05a6284
5 changed files with 96 additions and 1 deletions

View File

@ -13,6 +13,7 @@ These patches fix the following Wine bugs:
* GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](http://bugs.winehq.org/show_bug.cgi?id=15980 "Rhapsody 2 crashes on startup (GetSecurityInfo returns NULL DACL for process object)"))
* Fix for ConnectNamedPort return value in overlapped mode ([Wine Bug #16550](http://bugs.winehq.org/show_bug.cgi?id=16550 "ConnectNamedPort should never return OK in overlapped mode (affects chromium ui_tests.exe)"))
* Workaround for TransactNamedPipe not being supported ([Wine Bug #17273](http://bugs.winehq.org/show_bug.cgi?id=17273 "Many apps and games need SetNamedPipeHandleState implementation (support for named pipe message mode)(FireFox+Flash, Win8/NET 4.x SDK/vcrun2012, WiX installers)"))
* ATL IOCS data should not be stored in GWLP_USERDATA ([Wine Bug #21767](http://bugs.winehq.org/show_bug.cgi?id=21767 "JLC's Internet TV crashes on startup"))
* Support for process ACLs ([Wine Bug #22006](http://bugs.winehq.org/show_bug.cgi?id=22006 "OpenProcess does not enforce ACL"))
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](http://bugs.winehq.org/show_bug.cgi?id=23174 "Fallout 3: Diologue and Video/sound issues"))
* Add implementation of WTSEnumerateProcessesW ([Wine Bug #29903](http://bugs.winehq.org/show_bug.cgi?id=29903 "Some Microsoft debuggers fail to enumerate processes due to wtsapi32.WTSEnumerateProcessesW() being a stub (Microsoft Visual Studio 2005, DbgCLR from .NET 2.0 SDK)"))

3
debian/changelog vendored
View File

@ -1,7 +1,8 @@
wine-compholio (1.7.24) UNRELEASED; urgency=low
* Added patch to implement AllocateAndGetTcpExTableFromStack.
* Added patch to fix ConnectNamedPort return value in overlapped mode.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Sat, 26 Jul 2014 14:41:52 -0600
* Added patch to store IOCS data in a property instead of GWLP_USERDATA.
-- Erich E. Hoover <erich.e.hoover@gmail.com> Sat, 26 Jul 2014 15:18:40 -0600
wine-compholio (1.7.23) unstable; urgency=low
* Rewrite of patch system to simplify maintaining large patchsets.

View File

@ -7,6 +7,7 @@ PATCH := $(CURDIR)/../debian/tools/gitapply.sh -d $(DESTDIR)
PATCHLIST := Miscellaneous.ok \
Pipelight.ok \
atl-IOCS_Property.ok \
fonts-Missing_Fonts.ok \
iphlpapi-TCP_Table.ok \
kernel32-GetVolumePathName.ok \
@ -94,6 +95,23 @@ Pipelight.ok:
echo '+ { "Pipelight", "Sebastian Lackner", "Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command." },'; \
) > Pipelight.ok
# Patchset atl-IOCS_Property
# |
# | Included patches:
# | * Store IOCS data in a property instead of GWLP_USERDATA. [by Qian Hong]
# |
# | This patchset fixes the following Wine bugs:
# | * [#21767] JLC's Internet TV crashes on startup
# |
# | Modified files:
# | * dlls/atl/atl_ax.c
# |
atl-IOCS_Property.ok:
$(PATCH) < atl-IOCS_Property/0001-atl-Don-t-use-GWLP_USERDATA-to-store-IOCS-to-avoid-c.patch
@( \
echo '+ { "atl-IOCS_Property", "Qian Hong", "Store IOCS data in a property instead of GWLP_USERDATA." },'; \
) > atl-IOCS_Property.ok
# Patchset fonts-Missing_Fonts
# |
# | Included patches:

View File

@ -0,0 +1,71 @@
From 4d79656ea8c30f14fcd4a8e6a901e7b50ea50eef Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Thu, 17 Apr 2014 04:34:30 +0800
Subject: atl: Don't use GWLP_USERDATA to store IOCS to avoid conflict with
Apps.
---
dlls/atl/atl_ax.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/dlls/atl/atl_ax.c b/dlls/atl/atl_ax.c
index 5bafbf1..45936e8 100644
--- a/dlls/atl/atl_ax.c
+++ b/dlls/atl/atl_ax.c
@@ -38,6 +38,8 @@
#include "wine/unicode.h"
+#define WINE_IOCS_PROPERTY "WINE_IOCS"
+
WINE_DEFAULT_DEBUG_CHANNEL(atl);
typedef struct IOCS {
@@ -150,7 +152,7 @@ static HRESULT IOCS_Detach( IOCS *This ) /* remove subclassing */
if ( This->hWnd )
{
SetWindowLongPtrW( This->hWnd, GWLP_WNDPROC, (ULONG_PTR) This->OrigWndProc );
- SetWindowLongPtrW( This->hWnd, GWLP_USERDATA, 0 );
+ RemovePropA( This->hWnd, WINE_IOCS_PROPERTY );
This->hWnd = NULL;
}
if ( This->control )
@@ -906,7 +908,7 @@ static LRESULT IOCS_OnWndProc( IOCS *This, HWND hWnd, UINT uMsg, WPARAM wParam,
static LRESULT CALLBACK AtlHost_wndproc( HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam )
{
- IOCS *This = (IOCS*) GetWindowLongPtrW( hWnd, GWLP_USERDATA );
+ IOCS *This = (IOCS*) GetPropA( hWnd, WINE_IOCS_PROPERTY );
return IOCS_OnWndProc( This, hWnd, wMsg, wParam, lParam );
}
@@ -915,7 +917,7 @@ static HRESULT IOCS_Attach( IOCS *This, HWND hWnd, IUnknown *pUnkControl ) /* su
This->hWnd = hWnd;
IUnknown_QueryInterface( pUnkControl, &IID_IOleObject, (void**)&This->control );
IOleObject_SetClientSite( This->control, &This->IOleClientSite_iface );
- SetWindowLongPtrW( hWnd, GWLP_USERDATA, (ULONG_PTR) This );
+ SetPropA( hWnd, WINE_IOCS_PROPERTY, This );
This->OrigWndProc = (WNDPROC)SetWindowLongPtrW( hWnd, GWLP_WNDPROC, (ULONG_PTR) AtlHost_wndproc );
return S_OK;
@@ -1329,7 +1331,7 @@ HRESULT WINAPI AtlAxGetHost(HWND hWnd, IUnknown **host)
*host = NULL;
- This = (IOCS*) GetWindowLongPtrW( hWnd, GWLP_USERDATA );
+ This = (IOCS*) GetPropA( hWnd, WINE_IOCS_PROPERTY );
if ( !This )
{
WARN("No container attached to %p\n", hWnd );
@@ -1351,7 +1353,7 @@ HRESULT WINAPI AtlAxGetControl(HWND hWnd, IUnknown **pUnk)
*pUnk = NULL;
- This = (IOCS*) GetWindowLongPtrW( hWnd, GWLP_USERDATA );
+ This = (IOCS*) GetPropA ( hWnd, WINE_IOCS_PROPERTY );
if ( !This || !This->control )
{
WARN("No control attached to %p\n", hWnd );
--
1.7.9.5

View File

@ -0,0 +1,4 @@
Author: Qian Hong
Subject: Store IOCS data in a property instead of GWLP_USERDATA.
Revision: 1
Fixes: [21767] ATL IOCS data should not be stored in GWLP_USERDATA