You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
11 Commits
v1.8.2-uno
...
v1.9.0
Author | SHA1 | Date | |
---|---|---|---|
|
f3609f5452 | ||
|
480c7249b5 | ||
|
dcdcf18047 | ||
|
26ef94413d | ||
|
25493b94b1 | ||
|
b9c5736515 | ||
|
f291e6b294 | ||
|
5d94a2566b | ||
|
58890792b7 | ||
|
e3c64796cd | ||
|
81ee7ad18a |
13
README.md
13
README.md
@@ -34,7 +34,7 @@ Wine. All those differences are also documented on the
|
||||
Included bug fixes and improvements
|
||||
-----------------------------------
|
||||
|
||||
**Bug fixes and features in Wine Staging 1.8 [268]:**
|
||||
**Bug fixes and features in Wine Staging 1.9.0 [269]:**
|
||||
|
||||
*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
|
||||
@@ -46,7 +46,6 @@ for more details.*
|
||||
* Add IDragSourceHelper stub interface ([Wine Bug #24699](https://bugs.winehq.org/show_bug.cgi?id=24699))
|
||||
* Add IHTMLLocation::hash property's getter implementation ([Wine Bug #32967](https://bugs.winehq.org/show_bug.cgi?id=32967))
|
||||
* Add a ProfileList\<UserSID> registry subkey ([Wine Bug #15670](https://bugs.winehq.org/show_bug.cgi?id=15670))
|
||||
* Add a stub driver for tdi.sys ([Wine Bug #35693](https://bugs.winehq.org/show_bug.cgi?id=35693))
|
||||
* Add implementation for comctl32.PROPSHEET_InsertPage. ([Wine Bug #25625](https://bugs.winehq.org/show_bug.cgi?id=25625))
|
||||
* Add implementation for mfplat.MFTEnum ([Wine Bug #39309](https://bugs.winehq.org/show_bug.cgi?id=39309))
|
||||
* Add implementation for mfplat.MFTRegister ([Wine Bug #37811](https://bugs.winehq.org/show_bug.cgi?id=37811))
|
||||
@@ -67,7 +66,6 @@ for more details.*
|
||||
* Add stub for ntoskrnl.KeWaitForMultipleObjects ([Wine Bug #32186](https://bugs.winehq.org/show_bug.cgi?id=32186))
|
||||
* Add stub for ntoskrnl.Mm{Map,Unmap}LockedPages
|
||||
* 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 winscard.SCardListReadersA/W ([Wine Bug #26978](https://bugs.winehq.org/show_bug.cgi?id=26978))
|
||||
* Add stub for winspool.SetPrinterW level 8 ([Wine Bug #24645](https://bugs.winehq.org/show_bug.cgi?id=24645))
|
||||
@@ -76,7 +74,6 @@ for more details.*
|
||||
* Add stubbed ISWbemSecurity interfaces in wbemdisp
|
||||
* Add stubs for D3DXCreateAnimationController interface
|
||||
* Add stubs for additional wininet options in InternetSetOption
|
||||
* Add stubs for advapi32.RegCreateKeyTransacted[A/W]
|
||||
* Add support for CopyFileEx progress callback ([Wine Bug #22692](https://bugs.winehq.org/show_bug.cgi?id=22692))
|
||||
* Add support for GTK3 theming
|
||||
* Add support for GetPropValue to PulseAudio backend
|
||||
@@ -99,6 +96,7 @@ for more details.*
|
||||
* Anno 1602 installer depends on Windows 98 behavior of SHFileOperationW ([Wine Bug #37916](https://bugs.winehq.org/show_bug.cgi?id=37916))
|
||||
* Assign a drive serial number during prefix creation/update ([Wine Bug #17823](https://bugs.winehq.org/show_bug.cgi?id=17823))
|
||||
* Audio stuttering and performance drops in multiple applications ([Wine Bug #30639](https://bugs.winehq.org/show_bug.cgi?id=30639))
|
||||
* Avoid corruption of caret when SetCaretPos() is called
|
||||
* 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.
|
||||
@@ -109,6 +107,7 @@ for more details.*
|
||||
* 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))
|
||||
* Catch invalid memory accesses in imagehlp.CheckSumMappedFile
|
||||
* Check IsWoW64Process before calling Wow64 functions in UNIXFS_get_unix_path
|
||||
* Check architecture before trying to load libraries ([Wine Bug #38021](https://bugs.winehq.org/show_bug.cgi?id=38021))
|
||||
* Check handle type for HSPFILEQ handles ([Wine Bug #12332](https://bugs.winehq.org/show_bug.cgi?id=12332))
|
||||
* Codepage conversion should fail when destination length is < 0
|
||||
@@ -151,7 +150,6 @@ for more details.*
|
||||
* Fix handling of empty section and key name for profile files. ([Wine Bug #8036](https://bugs.winehq.org/show_bug.cgi?id=8036))
|
||||
* Fix handling of invert_y in DrawTextExW ([Wine Bug #22109](https://bugs.winehq.org/show_bug.cgi?id=22109))
|
||||
* Fix handling of window attributes for WS_EX_LAYERED | WS_EX_COMPOSITED ([Wine Bug #37876](https://bugs.winehq.org/show_bug.cgi?id=37876))
|
||||
* Fix implementation of NtQueryInformationProcess for ProcessDebugFlags
|
||||
* Fix implementation of msvcrt.close when stdout == stderr
|
||||
* Fix issue causing applications to report magic loopback address instead of real IP ([Wine Bug #37271](https://bugs.winehq.org/show_bug.cgi?id=37271))
|
||||
* Fix issues with dragging layers between images in Adobe Photoshop 7.0 ([Wine Bug #12007](https://bugs.winehq.org/show_bug.cgi?id=12007))
|
||||
@@ -233,6 +231,7 @@ for more details.*
|
||||
* Need for Speed 3 installer requires devices in HKEY_DYN_DATA ([Wine Bug #7115](https://bugs.winehq.org/show_bug.cgi?id=7115))
|
||||
* Only set SFGAO_HASSUBFOLDER when there are really subfolders ([Wine Bug #24851](https://bugs.winehq.org/show_bug.cgi?id=24851))
|
||||
* Other Pipelight-specific enhancements
|
||||
* Pass MOUSEHOOKSTRUCTEX struct to mouse hook callback ([Wine Bug #38314](https://bugs.winehq.org/show_bug.cgi?id=38314))
|
||||
* 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
|
||||
@@ -254,6 +253,7 @@ for more details.*
|
||||
* Return fake device type when systemroot is located on virtual disk ([Wine Bug #36546](https://bugs.winehq.org/show_bug.cgi?id=36546))
|
||||
* Return proper status codes when NtReadFile/NtWriteFile is called on closed (but not disconnected) pipe
|
||||
* SHFileOperation with FO_MOVE should create new directory on Vista+ ([Wine Bug #25207](https://bugs.winehq.org/show_bug.cgi?id=25207))
|
||||
* SHMapHandle should not set error when NULL is passed as hShared
|
||||
* SO_CONNECT_TIME returns the appropriate time
|
||||
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](https://bugs.winehq.org/show_bug.cgi?id=35652))
|
||||
* Set EOF on file which has a memory mapping should fail
|
||||
@@ -295,7 +295,7 @@ for more details.*
|
||||
* Support for setcap on wine-preloader ([Wine Bug #26256](https://bugs.winehq.org/show_bug.cgi?id=26256))
|
||||
* Support for shell32 file operation progress dialog
|
||||
* Support for stored file ACLs ([Wine Bug #33576](https://bugs.winehq.org/show_bug.cgi?id=33576))
|
||||
* Support for ws2_32.dll.WSAPoll ([Wine Bug #38601](https://bugs.winehq.org/show_bug.cgi?id=38601))
|
||||
* SysAllocStringByteLen should align terminating null WCHAR
|
||||
* 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 GLX_MESA_query_renderer extension to get more exact GPU infos
|
||||
@@ -308,6 +308,7 @@ for more details.*
|
||||
* Voobly expects correct handling of WRITECOPY memory protection ([Wine Bug #29384](https://bugs.winehq.org/show_bug.cgi?id=29384))
|
||||
* Wine ignores IDF_CHECKFIRST flag in SetupPromptForDisk ([Wine Bug #20465](https://bugs.winehq.org/show_bug.cgi?id=20465))
|
||||
* Workaround for shlwapi URLs with relative paths
|
||||
* Workaround installation bug of IE7 caused by version bump
|
||||
* XEMBED support for embedding Wine windows inside Linux applications
|
||||
* eRacer Demo doesn't correctly display text ([Wine Bug #29598](https://bugs.winehq.org/show_bug.cgi?id=29598))
|
||||
* ntdll is missing WinSqm[Start|End]Session implementation ([Wine Bug #31971](https://bugs.winehq.org/show_bug.cgi?id=31971))
|
||||
|
@@ -1,64 +0,0 @@
|
||||
From a5cf87f611909a601fe00cbdd5235add43652c54 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 14 Nov 2015 17:29:43 +0100
|
||||
Subject: advapi32: Add stubs for RegCreateKeyTransacted[A/W] functions.
|
||||
|
||||
---
|
||||
dlls/advapi32/advapi32.spec | 4 ++--
|
||||
dlls/advapi32/registry.c | 25 +++++++++++++++++++++++++
|
||||
2 files changed, 27 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/advapi32/advapi32.spec b/dlls/advapi32/advapi32.spec
|
||||
index ff2b0de..36f176b 100644
|
||||
--- a/dlls/advapi32/advapi32.spec
|
||||
+++ b/dlls/advapi32/advapi32.spec
|
||||
@@ -581,8 +581,8 @@
|
||||
@ stdcall RegCreateKeyExA(long str long ptr long long ptr ptr ptr)
|
||||
@ stdcall RegCreateKeyExW(long wstr long ptr long long ptr ptr ptr)
|
||||
@ stdcall RegCreateKeyW(long wstr ptr)
|
||||
-# @ stub RegCreateKeyTransactedA
|
||||
-# @ stub RegCreateKeyTransactedW
|
||||
+@ stdcall RegCreateKeyTransactedA(long str long ptr long long ptr ptr ptr long ptr)
|
||||
+@ stdcall RegCreateKeyTransactedW(long wstr long ptr long long ptr ptr ptr long ptr)
|
||||
@ stdcall RegDeleteKeyA(long str)
|
||||
@ stdcall RegDeleteKeyExA(long str long long)
|
||||
@ stdcall RegDeleteKeyExW(long wstr long long)
|
||||
diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c
|
||||
index 798f93d..6b4c873 100644
|
||||
--- a/dlls/advapi32/registry.c
|
||||
+++ b/dlls/advapi32/registry.c
|
||||
@@ -473,6 +473,31 @@ LSTATUS WINAPI RegCreateKeyA( HKEY hkey, LPCSTR lpSubKey, PHKEY phkResult )
|
||||
}
|
||||
|
||||
|
||||
+/******************************************************************************
|
||||
+ * RegCreateKeyTransactedW [ADVAPI32.@]
|
||||
+ */
|
||||
+LSTATUS WINAPI RegCreateKeyTransactedW( HKEY hkey, LPCWSTR name, DWORD reserved, LPWSTR class,
|
||||
+ DWORD options, REGSAM access, SECURITY_ATTRIBUTES *sa,
|
||||
+ PHKEY retkey, LPDWORD dispos, HANDLE transaction, PVOID reserved2 )
|
||||
+{
|
||||
+ FIXME( "(%p,%s,%u,%s,%u,%u,%p,%p,%p,%p,%p): stub\n", hkey, debugstr_w(name), reserved,
|
||||
+ debugstr_w(class), options, access, sa, retkey, dispos, transaction, reserved2 );
|
||||
+ return ERROR_CALL_NOT_IMPLEMENTED;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/******************************************************************************
|
||||
+ * RegCreateKeyTransactedA [ADVAPI32.@]
|
||||
+ */
|
||||
+LSTATUS WINAPI RegCreateKeyTransactedA( HKEY hkey, LPCSTR name, DWORD reserved, LPSTR class,
|
||||
+ DWORD options, REGSAM access, SECURITY_ATTRIBUTES *sa,
|
||||
+ PHKEY retkey, LPDWORD dispos, HANDLE transaction, PVOID reserved2 )
|
||||
+{
|
||||
+ FIXME( "(%p,%s,%u,%s,%u,%u,%p,%p,%p,%p,%p): stub\n", hkey, debugstr_a(name), reserved,
|
||||
+ debugstr_a(class), options, access, sa, retkey, dispos, transaction, reserved2 );
|
||||
+ return ERROR_CALL_NOT_IMPLEMENTED;
|
||||
+}
|
||||
+
|
||||
|
||||
/******************************************************************************
|
||||
* RegOpenKeyExW [ADVAPI32.@]
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: Add stubs for advapi32.RegCreateKeyTransacted[A/W]
|
@@ -1,2 +1,3 @@
|
||||
Fixes: Software support for Environmental Audio Extensions (EAX)
|
||||
Depends: dsound-Fast_Mixer
|
||||
Depends: dsound-Revert_Cleanup
|
||||
|
@@ -0,0 +1,106 @@
|
||||
From 462599cf79d964c6add1a7250f654d2e3110c4d2 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Wed, 23 Dec 2015 00:58:57 +0100
|
||||
Subject: Revert "dsound: Use a better name for
|
||||
IDirectSoundBufferImpl_Create()."
|
||||
|
||||
This reverts commit bb72548f3870b1df03ad9fe7ad2e543a69d5d574.
|
||||
---
|
||||
dlls/dsound/buffer.c | 24 +++++++++++++++---------
|
||||
dlls/dsound/dsound.c | 7 +++++--
|
||||
dlls/dsound/dsound_private.h | 6 ++++--
|
||||
3 files changed, 24 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
|
||||
index 2a80c3f..d7717fd 100644
|
||||
--- a/dlls/dsound/buffer.c
|
||||
+++ b/dlls/dsound/buffer.c
|
||||
@@ -983,15 +983,19 @@ static const IDirectSoundBuffer8Vtbl dsbvt =
|
||||
IDirectSoundBufferImpl_GetObjectInPath
|
||||
};
|
||||
|
||||
-HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *dsbd,
|
||||
- IDirectSoundBuffer **buffer)
|
||||
+HRESULT IDirectSoundBufferImpl_Create(
|
||||
+ DirectSoundDevice * device,
|
||||
+ IDirectSoundBufferImpl **pdsb,
|
||||
+ LPCDSBUFFERDESC dsbd)
|
||||
{
|
||||
IDirectSoundBufferImpl *dsb;
|
||||
LPWAVEFORMATEX wfex = dsbd->lpwfxFormat;
|
||||
HRESULT err = DS_OK;
|
||||
DWORD capf = 0;
|
||||
|
||||
- TRACE("(%p,%p,%p)\n", device, dsbd, buffer);
|
||||
+ TRACE("(%p,%p,%p)\n",device,pdsb,dsbd);
|
||||
+
|
||||
+ *pdsb = NULL;
|
||||
|
||||
if (dsbd->dwBufferBytes < DSBSIZE_MIN || dsbd->dwBufferBytes > DSBSIZE_MAX) {
|
||||
WARN("invalid parameter: dsbd->dwBufferBytes = %d\n", dsbd->dwBufferBytes);
|
||||
@@ -1103,12 +1107,14 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
|
||||
|
||||
RtlInitializeResource(&dsb->lock);
|
||||
|
||||
- /* register buffer */
|
||||
- err = DirectSoundDevice_AddBuffer(device, dsb);
|
||||
- if (err == DS_OK)
|
||||
- *buffer = (IDirectSoundBuffer*)&dsb->IDirectSoundBuffer8_iface;
|
||||
- else
|
||||
- IDirectSoundBuffer8_Release(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ /* register buffer if not primary */
|
||||
+ if (!(dsbd->dwFlags & DSBCAPS_PRIMARYBUFFER)) {
|
||||
+ err = DirectSoundDevice_AddBuffer(device, dsb);
|
||||
+ if (err == DS_OK)
|
||||
+ *pdsb = dsb;
|
||||
+ else
|
||||
+ IDirectSoundBuffer8_Release(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ }
|
||||
|
||||
return err;
|
||||
}
|
||||
diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c
|
||||
index ccefd1f..e50ef58 100644
|
||||
--- a/dlls/dsound/dsound.c
|
||||
+++ b/dlls/dsound/dsound.c
|
||||
@@ -469,6 +469,8 @@ static HRESULT DirectSoundDevice_CreateSoundBuffer(
|
||||
WARN("primarybuffer_create() failed\n");
|
||||
}
|
||||
} else {
|
||||
+ IDirectSoundBufferImpl * dsb;
|
||||
+
|
||||
if (dsbd->lpwfxFormat == NULL) {
|
||||
WARN("invalid parameter: dsbd->lpwfxFormat can't be NULL for "
|
||||
"secondary buffer\n");
|
||||
@@ -545,8 +547,9 @@ static HRESULT DirectSoundDevice_CreateSoundBuffer(
|
||||
return DSERR_INVALIDPARAM;
|
||||
}
|
||||
|
||||
- hres = secondarybuffer_create(device, dsbd, ppdsb);
|
||||
- if (SUCCEEDED(hres)) {
|
||||
+ hres = IDirectSoundBufferImpl_Create(device, &dsb, dsbd);
|
||||
+ if (dsb) {
|
||||
+ *ppdsb = (IDirectSoundBuffer*)&dsb->IDirectSoundBuffer8_iface;
|
||||
if (dsbd->dwFlags & DSBCAPS_LOCHARDWARE)
|
||||
device->drvcaps.dwFreeHwMixingAllBuffers--;
|
||||
} else
|
||||
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
|
||||
index 07bda48..9c001ed 100644
|
||||
--- a/dlls/dsound/dsound_private.h
|
||||
+++ b/dlls/dsound/dsound_private.h
|
||||
@@ -182,8 +182,10 @@ void put_stereo2quad(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel
|
||||
void put_mono2surround51(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) DECLSPEC_HIDDEN;
|
||||
void put_stereo2surround51(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) DECLSPEC_HIDDEN;
|
||||
|
||||
-HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *dsbd,
|
||||
- IDirectSoundBuffer **buffer) DECLSPEC_HIDDEN;
|
||||
+HRESULT IDirectSoundBufferImpl_Create(
|
||||
+ DirectSoundDevice *device,
|
||||
+ IDirectSoundBufferImpl **ppdsb,
|
||||
+ LPCDSBUFFERDESC dsbd) DECLSPEC_HIDDEN;
|
||||
HRESULT IDirectSoundBufferImpl_Duplicate(
|
||||
DirectSoundDevice *device,
|
||||
IDirectSoundBufferImpl **ppdsb,
|
||||
--
|
||||
2.6.4
|
||||
|
@@ -0,0 +1,116 @@
|
||||
From 974a901f92d5197d3db6356df454bdd47dea39da Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Wed, 23 Dec 2015 00:59:07 +0100
|
||||
Subject: Revert "dsound: Simplify error handling when creating a sound
|
||||
buffer."
|
||||
|
||||
This reverts commit d51d55bab8995f94dcc78ce8418a4149836c27b0.
|
||||
---
|
||||
dlls/dsound/buffer.c | 46 ++++++++++++++++++++++++++++++----------------
|
||||
1 file changed, 30 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
|
||||
index d7717fd..5aa2834 100644
|
||||
--- a/dlls/dsound/buffer.c
|
||||
+++ b/dlls/dsound/buffer.c
|
||||
@@ -992,28 +992,29 @@ HRESULT IDirectSoundBufferImpl_Create(
|
||||
LPWAVEFORMATEX wfex = dsbd->lpwfxFormat;
|
||||
HRESULT err = DS_OK;
|
||||
DWORD capf = 0;
|
||||
-
|
||||
TRACE("(%p,%p,%p)\n",device,pdsb,dsbd);
|
||||
|
||||
- *pdsb = NULL;
|
||||
-
|
||||
if (dsbd->dwBufferBytes < DSBSIZE_MIN || dsbd->dwBufferBytes > DSBSIZE_MAX) {
|
||||
WARN("invalid parameter: dsbd->dwBufferBytes = %d\n", dsbd->dwBufferBytes);
|
||||
+ *pdsb = NULL;
|
||||
return DSERR_INVALIDPARAM; /* FIXME: which error? */
|
||||
}
|
||||
|
||||
dsb = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(*dsb));
|
||||
|
||||
- if (!dsb)
|
||||
+ if (dsb == 0) {
|
||||
+ WARN("out of memory\n");
|
||||
+ *pdsb = NULL;
|
||||
return DSERR_OUTOFMEMORY;
|
||||
+ }
|
||||
|
||||
TRACE("Created buffer at %p\n", dsb);
|
||||
|
||||
- dsb->ref = 1;
|
||||
+ dsb->ref = 0;
|
||||
dsb->refn = 0;
|
||||
dsb->ref3D = 0;
|
||||
dsb->refiks = 0;
|
||||
- dsb->numIfaces = 1;
|
||||
+ dsb->numIfaces = 0;
|
||||
dsb->device = device;
|
||||
dsb->IDirectSoundBuffer8_iface.lpVtbl = &dsbvt;
|
||||
dsb->IDirectSoundNotify_iface.lpVtbl = &dsnvt;
|
||||
@@ -1024,8 +1025,9 @@ HRESULT IDirectSoundBufferImpl_Create(
|
||||
CopyMemory(&dsb->dsbd, dsbd, dsbd->dwSize);
|
||||
|
||||
dsb->pwfx = DSOUND_CopyFormat(wfex);
|
||||
- if (!dsb->pwfx) {
|
||||
- IDirectSoundBuffer8_Release(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ if (dsb->pwfx == NULL) {
|
||||
+ HeapFree(GetProcessHeap(),0,dsb);
|
||||
+ *pdsb = NULL;
|
||||
return DSERR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
@@ -1050,16 +1052,22 @@ HRESULT IDirectSoundBufferImpl_Create(
|
||||
|
||||
/* Allocate an empty buffer */
|
||||
dsb->buffer = HeapAlloc(GetProcessHeap(),0,sizeof(*(dsb->buffer)));
|
||||
- if (!dsb->buffer) {
|
||||
- IDirectSoundBuffer8_Release(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ if (dsb->buffer == NULL) {
|
||||
+ WARN("out of memory\n");
|
||||
+ HeapFree(GetProcessHeap(),0,dsb->pwfx);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb);
|
||||
+ *pdsb = NULL;
|
||||
return DSERR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
/* Allocate system memory for buffer */
|
||||
dsb->buffer->memory = HeapAlloc(GetProcessHeap(),0,dsb->buflen);
|
||||
- if (!dsb->buffer->memory) {
|
||||
+ if (dsb->buffer->memory == NULL) {
|
||||
WARN("out of memory\n");
|
||||
- IDirectSoundBuffer8_Release(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb->pwfx);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb->buffer);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb);
|
||||
+ *pdsb = NULL;
|
||||
return DSERR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
@@ -1110,12 +1118,18 @@ HRESULT IDirectSoundBufferImpl_Create(
|
||||
/* register buffer if not primary */
|
||||
if (!(dsbd->dwFlags & DSBCAPS_PRIMARYBUFFER)) {
|
||||
err = DirectSoundDevice_AddBuffer(device, dsb);
|
||||
- if (err == DS_OK)
|
||||
- *pdsb = dsb;
|
||||
- else
|
||||
- IDirectSoundBuffer8_Release(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ if (err != DS_OK) {
|
||||
+ HeapFree(GetProcessHeap(),0,dsb->buffer->memory);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb->buffer);
|
||||
+ RtlDeleteResource(&dsb->lock);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb->pwfx);
|
||||
+ HeapFree(GetProcessHeap(),0,dsb);
|
||||
+ dsb = NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
+ IDirectSoundBuffer8_AddRef(&dsb->IDirectSoundBuffer8_iface);
|
||||
+ *pdsb = dsb;
|
||||
return err;
|
||||
}
|
||||
|
||||
--
|
||||
2.6.4
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 6ae55e62a81e4f4ded0ea14926f014b6d6a4b633 Mon Sep 17 00:00:00 2001
|
||||
From 29ed0b32254cac13e07daea09b4288ce774688cc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Wed, 28 Oct 2015 22:36:01 +0100
|
||||
Subject: hal: Implement KeQueryPerformanceCounter.
|
||||
@@ -9,11 +9,11 @@ Subject: hal: Implement KeQueryPerformanceCounter.
|
||||
2 files changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/hal/hal.c b/dlls/hal/hal.c
|
||||
index 96bc895..145869d 100644
|
||||
index bca688e..84942ca 100644
|
||||
--- a/dlls/hal/hal.c
|
||||
+++ b/dlls/hal/hal.c
|
||||
@@ -155,3 +155,13 @@ KIRQL WINAPI KeGetCurrentIrql(VOID)
|
||||
FIXME( " stub!\n");
|
||||
@@ -161,3 +161,13 @@ ULONG WINAPI READ_PORT_ULONG(ULONG *port)
|
||||
FIXME("(%p) stub!\n", port);
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
@@ -27,7 +27,7 @@ index 96bc895..145869d 100644
|
||||
+ return counter.QuadPart;
|
||||
+}
|
||||
diff --git a/dlls/hal/hal.spec b/dlls/hal/hal.spec
|
||||
index 3046c65..dc908dd 100644
|
||||
index 02f778c..821084d 100644
|
||||
--- a/dlls/hal/hal.spec
|
||||
+++ b/dlls/hal/hal.spec
|
||||
@@ -72,7 +72,7 @@
|
||||
@@ -40,5 +40,5 @@ index 3046c65..dc908dd 100644
|
||||
@ stub KeRaiseIrqlToDpcLevel
|
||||
@ stub KeRaiseIrqlToSynchLevel
|
||||
--
|
||||
2.6.2
|
||||
2.6.4
|
||||
|
||||
|
@@ -0,0 +1,32 @@
|
||||
From 0c1c8f2879629c0e698c23373e699742f34b2bd1 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 27 Dec 2015 22:25:31 +0100
|
||||
Subject: Revert "iexplore: Sync registry and program resource values."
|
||||
|
||||
This reverts commit bda46cc6fd5fa0f3c9db947108b685533662037a.
|
||||
---
|
||||
programs/iexplore/iexplore.rc | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/programs/iexplore/iexplore.rc b/programs/iexplore/iexplore.rc
|
||||
index 3d6d50f..cd75781 100644
|
||||
--- a/programs/iexplore/iexplore.rc
|
||||
+++ b/programs/iexplore/iexplore.rc
|
||||
@@ -18,10 +18,10 @@
|
||||
|
||||
#define WINE_FILEDESCRIPTION_STR "Wine Internet Explorer"
|
||||
#define WINE_FILENAME_STR "iexplore.exe"
|
||||
-#define WINE_FILEVERSION 9,0,8112,16421
|
||||
-#define WINE_FILEVERSION_STR "9.0.8112.16421"
|
||||
-#define WINE_PRODUCTVERSION 9,0,8112,16421
|
||||
-#define WINE_PRODUCTVERSION_STR "9.0.8112.16421"
|
||||
+#define WINE_FILEVERSION 6,0,2900,2180
|
||||
+#define WINE_FILEVERSION_STR "6.0.2900.2180"
|
||||
+#define WINE_PRODUCTVERSION 6,0,2900,2180
|
||||
+#define WINE_PRODUCTVERSION_STR "6.0.2900.2180"
|
||||
#define WINE_EXTRAVALUES VALUE "OLESelfRegister",""
|
||||
|
||||
#include "wine/wine_common_ver.rc"
|
||||
--
|
||||
2.6.4
|
||||
|
1
patches/iexplore-Revert_ProductVersion/definition
Normal file
1
patches/iexplore-Revert_ProductVersion/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: Workaround installation bug of IE7 caused by version bump
|
@@ -1,50 +0,0 @@
|
||||
From 33fa174b6404cfea673d510457d21d784a23efbd Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 4 May 2014 00:18:11 +0200
|
||||
Subject: kernel32: Silence repeated CompareStringEx FIXME.
|
||||
|
||||
---
|
||||
dlls/kernel32/locale.c | 14 +++++++++-----
|
||||
1 file changed, 9 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c
|
||||
index eca0e39..55ef3d6 100644
|
||||
--- a/dlls/kernel32/locale.c
|
||||
+++ b/dlls/kernel32/locale.c
|
||||
@@ -2985,9 +2985,10 @@ INT WINAPI CompareStringW(LCID lcid, DWORD flags,
|
||||
INT WINAPI CompareStringEx(LPCWSTR locale, DWORD flags, LPCWSTR str1, INT len1,
|
||||
LPCWSTR str2, INT len2, LPNLSVERSIONINFO version, LPVOID reserved, LPARAM lParam)
|
||||
{
|
||||
- DWORD supported_flags = NORM_IGNORECASE|NORM_IGNORENONSPACE|NORM_IGNORESYMBOLS|SORT_STRINGSORT
|
||||
- |NORM_IGNOREKANATYPE|NORM_IGNOREWIDTH|LOCALE_USE_CP_ACP;
|
||||
- DWORD semistub_flags = NORM_LINGUISTIC_CASING|LINGUISTIC_IGNORECASE|0x10000000;
|
||||
+ static const DWORD supported_flags = NORM_IGNORECASE|NORM_IGNORENONSPACE|NORM_IGNORESYMBOLS|SORT_STRINGSORT
|
||||
+ |NORM_IGNOREKANATYPE|NORM_IGNOREWIDTH|LOCALE_USE_CP_ACP
|
||||
+ |NORM_LINGUISTIC_CASING|LINGUISTIC_IGNORECASE|0x10000000;
|
||||
+ static DWORD semistub_flags = NORM_LINGUISTIC_CASING|LINGUISTIC_IGNORECASE|0x10000000;
|
||||
/* 0x10000000 is related to diacritics in Arabic, Japanese, and Hebrew */
|
||||
INT ret;
|
||||
|
||||
@@ -3001,14 +3002,17 @@ INT WINAPI CompareStringEx(LPCWSTR locale, DWORD flags, LPCWSTR str1, INT len1,
|
||||
return 0;
|
||||
}
|
||||
|
||||
- if (flags & ~(supported_flags|semistub_flags))
|
||||
+ if (flags & ~supported_flags)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_FLAGS);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (flags & semistub_flags)
|
||||
- FIXME("semi-stub behavor for flag(s) 0x%x\n", flags & semistub_flags);
|
||||
+ {
|
||||
+ FIXME("semi-stub behavior for flag(s) 0x%x\n", flags & semistub_flags);
|
||||
+ semistub_flags &= ~flags;
|
||||
+ }
|
||||
|
||||
if (len1 < 0) len1 = strlenW(str1);
|
||||
if (len2 < 0) len2 = strlenW(str2);
|
||||
--
|
||||
1.7.9.5
|
||||
|
@@ -1 +0,0 @@
|
||||
Category: stable
|
@@ -1,20 +1,20 @@
|
||||
From ac9076b71ddda6d430fe80fcfe62a47c2dcc9dc9 Mon Sep 17 00:00:00 2001
|
||||
From e3b53e0794d83fc9eb39d78ca673c9144dd9873d Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Wed, 20 Aug 2014 15:28:00 -0600
|
||||
Subject: ntdll: Implement storing DOS attributes in NtCreateFile.
|
||||
|
||||
---
|
||||
dlls/ntdll/file.c | 79 ++++++++++++++++++++++++++++----------------
|
||||
dlls/ntdll/tests/directory.c | 22 +++++-------
|
||||
dlls/ntdll/tests/directory.c | 24 +++++---------
|
||||
include/wine/port.h | 2 ++
|
||||
libs/port/xattr.c | 20 +++++++++++
|
||||
4 files changed, 80 insertions(+), 43 deletions(-)
|
||||
4 files changed, 81 insertions(+), 44 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
|
||||
index 521ab64..b4187d4 100644
|
||||
index 7e32087..dd38995 100644
|
||||
--- a/dlls/ntdll/file.c
|
||||
+++ b/dlls/ntdll/file.c
|
||||
@@ -205,6 +205,21 @@ int get_file_info( const char *path, struct stat *st, ULONG *attr )
|
||||
@@ -219,6 +219,21 @@ int get_file_info( const char *path, struct stat *st, ULONG *attr )
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ index 521ab64..b4187d4 100644
|
||||
/**************************************************************************
|
||||
* FILE_CreateFile (internal)
|
||||
* Open a file.
|
||||
@@ -216,6 +231,8 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
|
||||
@@ -230,6 +245,8 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
|
||||
ULONG attributes, ULONG sharing, ULONG disposition,
|
||||
ULONG options, PVOID ea_buffer, ULONG ea_length )
|
||||
{
|
||||
@@ -45,7 +45,7 @@ index 521ab64..b4187d4 100644
|
||||
ANSI_STRING unix_name;
|
||||
BOOL created = FALSE;
|
||||
|
||||
@@ -259,39 +276,37 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
|
||||
@@ -273,39 +290,37 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
|
||||
io->u.Status = STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ index 521ab64..b4187d4 100644
|
||||
|
||||
if (io->u.Status == STATUS_SUCCESS)
|
||||
{
|
||||
@@ -313,6 +328,11 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
|
||||
@@ -327,6 +342,11 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
|
||||
io->Information = FILE_OVERWRITTEN;
|
||||
break;
|
||||
}
|
||||
@@ -124,7 +124,7 @@ index 521ab64..b4187d4 100644
|
||||
}
|
||||
else if (io->u.Status == STATUS_TOO_MANY_OPENED_FILES)
|
||||
{
|
||||
@@ -320,6 +340,7 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
|
||||
@@ -334,6 +354,7 @@ static NTSTATUS FILE_CreateFile( PHANDLE handle, ACCESS_MASK access, POBJECT_ATT
|
||||
if (!once++) ERR_(winediag)( "Too many open files, ulimit -n probably needs to be increased\n" );
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ index 521ab64..b4187d4 100644
|
||||
}
|
||||
|
||||
diff --git a/dlls/ntdll/tests/directory.c b/dlls/ntdll/tests/directory.c
|
||||
index f190ff4..68b5406 100644
|
||||
index 7b1002a..aa8e97f 100644
|
||||
--- a/dlls/ntdll/tests/directory.c
|
||||
+++ b/dlls/ntdll/tests/directory.c
|
||||
@@ -51,7 +51,6 @@ static NTSTATUS (WINAPI *pRtlWow64EnableFsRedirectionEx)( ULONG disable, ULONG *
|
||||
@@ -144,10 +144,11 @@ index f190ff4..68b5406 100644
|
||||
BOOL attr_done; /* set if attributes were tested for this file already */
|
||||
const DWORD attr; /* desired attribute */
|
||||
const char *name; /* filename to use */
|
||||
@@ -60,13 +59,13 @@ static struct testfile_s {
|
||||
@@ -60,14 +59,14 @@ static struct testfile_s {
|
||||
int nfound; /* How many were found (expect 1) */
|
||||
WCHAR nameW[20]; /* unicode version of name (filled in later) */
|
||||
} testfiles[] = {
|
||||
- { 0, 0, FILE_ATTRIBUTE_NORMAL, "longfilename.tmp", NULL, "normal" },
|
||||
- { 0, 0, FILE_ATTRIBUTE_NORMAL, "n.tmp", NULL, "normal" },
|
||||
- { 1, 0, FILE_ATTRIBUTE_HIDDEN, "h.tmp", NULL, "hidden" },
|
||||
- { 1, 0, FILE_ATTRIBUTE_SYSTEM, "s.tmp", NULL, "system" },
|
||||
@@ -155,6 +156,7 @@ index f190ff4..68b5406 100644
|
||||
- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, ".", NULL, ". directory" },
|
||||
- { 0, 0, FILE_ATTRIBUTE_DIRECTORY, "..", NULL, ".. directory" },
|
||||
- { 0, 0, 0, NULL }
|
||||
+ { 0, FILE_ATTRIBUTE_NORMAL, "longfilename.tmp", NULL, "normal" },
|
||||
+ { 0, FILE_ATTRIBUTE_NORMAL, "n.tmp", NULL, "normal" },
|
||||
+ { 0, FILE_ATTRIBUTE_HIDDEN, "h.tmp", NULL, "hidden" },
|
||||
+ { 0, FILE_ATTRIBUTE_SYSTEM, "s.tmp", NULL, "system" },
|
||||
@@ -165,7 +167,7 @@ index f190ff4..68b5406 100644
|
||||
};
|
||||
static const int max_test_dir_size = 20; /* size of above plus some for .. etc */
|
||||
|
||||
@@ -147,12 +146,7 @@ static void tally_test_file(FILE_BOTH_DIRECTORY_INFORMATION *dir_info)
|
||||
@@ -148,12 +147,7 @@ static void tally_test_file(FILE_BOTH_DIRECTORY_INFORMATION *dir_info)
|
||||
if (namelen != len || memcmp(nameW, testfiles[i].nameW, len*sizeof(WCHAR)))
|
||||
continue;
|
||||
if (!testfiles[i].attr_done) {
|
||||
@@ -180,7 +182,7 @@ index f190ff4..68b5406 100644
|
||||
}
|
||||
testfiles[i].nfound++;
|
||||
diff --git a/include/wine/port.h b/include/wine/port.h
|
||||
index cc572f3..9e2b8165 100644
|
||||
index 445a25e..04ae7a6 100644
|
||||
--- a/include/wine/port.h
|
||||
+++ b/include/wine/port.h
|
||||
@@ -373,6 +373,8 @@ extern int xattr_fget( int filedes, const char *name, void *value, size_t size )
|
||||
@@ -221,5 +223,5 @@ index 6918c99..683e7a6 100644
|
||||
+#endif
|
||||
+}
|
||||
--
|
||||
1.9.1
|
||||
2.6.4
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 1d4383d08858f302927f08138bbe81093efbfd14 Mon Sep 17 00:00:00 2001
|
||||
From 24da37188127f234bfefec34ef03cf45746a8402 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 28 Sep 2014 22:42:46 +0200
|
||||
Subject: ntdll: Throw exception if invalid handle is passed to NtClose and
|
||||
@@ -10,7 +10,7 @@ Subject: ntdll: Throw exception if invalid handle is passed to NtClose and
|
||||
2 files changed, 92 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/om.c b/dlls/ntdll/om.c
|
||||
index 47a2614..bcc6d69 100644
|
||||
index 3fadba7..6527501 100644
|
||||
--- a/dlls/ntdll/om.c
|
||||
+++ b/dlls/ntdll/om.c
|
||||
@@ -38,6 +38,7 @@
|
||||
@@ -21,7 +21,7 @@ index 47a2614..bcc6d69 100644
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
|
||||
|
||||
@@ -343,6 +344,13 @@ NTSTATUS WINAPI NtDuplicateObject( HANDLE source_process, HANDLE source,
|
||||
@@ -377,6 +378,13 @@ NTSTATUS WINAPI NtDuplicateObject( HANDLE source_process, HANDLE source,
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ index 47a2614..bcc6d69 100644
|
||||
/* Everquest 2 / Pirates of the Burning Sea hooks NtClose, so we need a wrapper */
|
||||
NTSTATUS close_handle( HANDLE handle )
|
||||
{
|
||||
@@ -356,6 +364,25 @@ NTSTATUS close_handle( HANDLE handle )
|
||||
@@ -390,6 +398,25 @@ NTSTATUS close_handle( HANDLE handle )
|
||||
}
|
||||
SERVER_END_REQ;
|
||||
if (fd != -1) close( fd );
|
||||
@@ -62,10 +62,10 @@ index 47a2614..bcc6d69 100644
|
||||
}
|
||||
|
||||
diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c
|
||||
index 5cbab71..7a97ae5 100644
|
||||
index f355513..98d73f4 100644
|
||||
--- a/dlls/ntdll/tests/exception.c
|
||||
+++ b/dlls/ntdll/tests/exception.c
|
||||
@@ -53,6 +53,7 @@ static NTSTATUS (WINAPI *pNtTerminateProcess)(HANDLE handle, LONG exit_code);
|
||||
@@ -52,6 +52,7 @@ static NTSTATUS (WINAPI *pNtTerminateProcess)(HANDLE handle, LONG exit_code);
|
||||
static NTSTATUS (WINAPI *pNtQueryInformationProcess)(HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG);
|
||||
static NTSTATUS (WINAPI *pNtSetInformationProcess)(HANDLE, PROCESSINFOCLASS, PVOID, ULONG);
|
||||
static BOOL (WINAPI *pIsWow64Process)(HANDLE, PBOOL);
|
||||
@@ -73,7 +73,7 @@ index 5cbab71..7a97ae5 100644
|
||||
|
||||
#if defined(__x86_64__)
|
||||
static BOOLEAN (CDECL *pRtlAddFunctionTable)(RUNTIME_FUNCTION*, DWORD, DWORD64);
|
||||
@@ -938,6 +939,16 @@ static void test_debugger(void)
|
||||
@@ -937,6 +938,16 @@ static void test_debugger(void)
|
||||
/* here we handle exception */
|
||||
}
|
||||
}
|
||||
@@ -90,7 +90,7 @@ index 5cbab71..7a97ae5 100644
|
||||
else
|
||||
ok(FALSE, "unexpected stage %x\n", stage);
|
||||
|
||||
@@ -1791,6 +1802,53 @@ static void test_ripevent(DWORD numexc)
|
||||
@@ -1893,6 +1904,53 @@ static void test_ripevent(DWORD numexc)
|
||||
pRtlRemoveVectoredExceptionHandler(vectored_handler);
|
||||
}
|
||||
|
||||
@@ -144,7 +144,7 @@ index 5cbab71..7a97ae5 100644
|
||||
static void test_vectored_continue_handler(void)
|
||||
{
|
||||
PVOID handler1, handler2;
|
||||
@@ -1843,6 +1901,7 @@ START_TEST(exception)
|
||||
@@ -1945,6 +2003,7 @@ START_TEST(exception)
|
||||
pNtGetContextThread = (void *)GetProcAddress( hntdll, "NtGetContextThread" );
|
||||
pNtSetContextThread = (void *)GetProcAddress( hntdll, "NtSetContextThread" );
|
||||
pNtReadVirtualMemory = (void *)GetProcAddress( hntdll, "NtReadVirtualMemory" );
|
||||
@@ -152,7 +152,7 @@ index 5cbab71..7a97ae5 100644
|
||||
pRtlUnwind = (void *)GetProcAddress( hntdll, "RtlUnwind" );
|
||||
pRtlRaiseException = (void *)GetProcAddress( hntdll, "RtlRaiseException" );
|
||||
pNtTerminateProcess = (void *)GetProcAddress( hntdll, "NtTerminateProcess" );
|
||||
@@ -1910,6 +1969,10 @@ START_TEST(exception)
|
||||
@@ -2012,6 +2071,10 @@ START_TEST(exception)
|
||||
test_ripevent(0);
|
||||
test_stage = 6;
|
||||
test_ripevent(1);
|
||||
@@ -163,16 +163,16 @@ index 5cbab71..7a97ae5 100644
|
||||
}
|
||||
else
|
||||
skip( "RtlRaiseException not found\n" );
|
||||
@@ -1923,6 +1986,7 @@ START_TEST(exception)
|
||||
test_rtlraiseexception();
|
||||
@@ -2026,6 +2089,7 @@ START_TEST(exception)
|
||||
test_debug_registers();
|
||||
test_outputdebugstring(1, FALSE);
|
||||
test_ripevent(1);
|
||||
+ test_closehandle(0);
|
||||
test_vectored_continue_handler();
|
||||
test_debugger();
|
||||
test_simd_exceptions();
|
||||
@@ -1942,6 +2006,7 @@ START_TEST(exception)
|
||||
|
||||
@@ -2046,6 +2110,7 @@ START_TEST(exception)
|
||||
test_debug_registers();
|
||||
test_outputdebugstring(1, FALSE);
|
||||
test_ripevent(1);
|
||||
+ test_closehandle(0);
|
||||
@@ -180,5 +180,5 @@ index 5cbab71..7a97ae5 100644
|
||||
test_virtual_unwind();
|
||||
|
||||
--
|
||||
2.1.3
|
||||
2.6.4
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 51935986a1e973ab26dc3035905a47e1f19c6062 Mon Sep 17 00:00:00 2001
|
||||
From 090cf9addeea643d624b4b7c3a6b0fbc04c9c253 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 28 Sep 2014 23:39:51 +0200
|
||||
Subject: ntdll: OutputDebugString should throw the exception a second time, if
|
||||
@@ -38,10 +38,10 @@ index d4d66b2..981661b 100644
|
||||
if (!mutex_inited)
|
||||
{
|
||||
diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c
|
||||
index 7a97ae5..b0f0fac 100644
|
||||
index 98d73f4..f9dd95d 100644
|
||||
--- a/dlls/ntdll/tests/exception.c
|
||||
+++ b/dlls/ntdll/tests/exception.c
|
||||
@@ -1727,7 +1727,7 @@ static LONG CALLBACK outputdebugstring_vectored_handler(EXCEPTION_POINTERS *Exce
|
||||
@@ -1829,7 +1829,7 @@ static LONG CALLBACK outputdebugstring_vectored_handler(EXCEPTION_POINTERS *Exce
|
||||
return EXCEPTION_CONTINUE_SEARCH;
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ index 7a97ae5..b0f0fac 100644
|
||||
{
|
||||
PVOID vectored_handler;
|
||||
|
||||
@@ -1742,13 +1742,8 @@ static void test_outputdebugstring(DWORD numexc, BOOL todo)
|
||||
@@ -1844,13 +1844,8 @@ static void test_outputdebugstring(DWORD numexc, BOOL todo)
|
||||
|
||||
outputdebugstring_exceptions = 0;
|
||||
OutputDebugStringA("Hello World");
|
||||
@@ -66,7 +66,7 @@ index 7a97ae5..b0f0fac 100644
|
||||
|
||||
pRtlRemoveVectoredExceptionHandler(vectored_handler);
|
||||
}
|
||||
@@ -1962,9 +1957,9 @@ START_TEST(exception)
|
||||
@@ -2064,9 +2059,9 @@ START_TEST(exception)
|
||||
run_rtlraiseexception_test(EXCEPTION_BREAKPOINT);
|
||||
run_rtlraiseexception_test(EXCEPTION_INVALID_HANDLE);
|
||||
test_stage = 3;
|
||||
@@ -78,24 +78,24 @@ index 7a97ae5..b0f0fac 100644
|
||||
test_stage = 5;
|
||||
test_ripevent(0);
|
||||
test_stage = 6;
|
||||
@@ -1984,7 +1979,7 @@ START_TEST(exception)
|
||||
test_unwind();
|
||||
@@ -2087,7 +2082,7 @@ START_TEST(exception)
|
||||
test_exceptions();
|
||||
test_rtlraiseexception();
|
||||
test_debug_registers();
|
||||
- test_outputdebugstring(1, FALSE);
|
||||
+ test_outputdebugstring(1);
|
||||
test_ripevent(1);
|
||||
test_closehandle(0);
|
||||
test_vectored_continue_handler();
|
||||
@@ -2004,7 +1999,7 @@ START_TEST(exception)
|
||||
pRtlLookupFunctionEntry = (void *)GetProcAddress( hntdll,
|
||||
@@ -2108,7 +2103,7 @@ START_TEST(exception)
|
||||
"RtlLookupFunctionEntry" );
|
||||
|
||||
test_debug_registers();
|
||||
- test_outputdebugstring(1, FALSE);
|
||||
+ test_outputdebugstring(1);
|
||||
test_ripevent(1);
|
||||
test_closehandle(0);
|
||||
test_vectored_continue_handler();
|
||||
--
|
||||
2.1.3
|
||||
2.6.4
|
||||
|
||||
|
1
patches/ntdll-Exception/definition
Normal file
1
patches/ntdll-Exception/definition
Normal file
@@ -0,0 +1 @@
|
||||
Depends: ntdll-x86_64_set_cpu_context
|
@@ -1,125 +0,0 @@
|
||||
From 682c8d52bbec194245ce03428ab1678a28d6acf5 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Thu, 10 Dec 2015 03:11:25 +0100
|
||||
Subject: ntdll: ProcessDebugFlags should return debug_children flag instead of
|
||||
!debugger_present.
|
||||
|
||||
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
|
||||
---
|
||||
dlls/ntdll/process.c | 2 +-
|
||||
dlls/ntdll/tests/info.c | 12 ++----------
|
||||
server/debugger.c | 2 +-
|
||||
server/process.c | 5 +++--
|
||||
server/protocol.def | 3 ++-
|
||||
5 files changed, 9 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
|
||||
index ca9462a..5a5c3ef 100644
|
||||
--- a/dlls/ntdll/process.c
|
||||
+++ b/dlls/ntdll/process.c
|
||||
@@ -339,7 +339,7 @@ NTSTATUS WINAPI NtQueryInformationProcess(
|
||||
req->handle = wine_server_obj_handle( ProcessHandle );
|
||||
if ((ret = wine_server_call( req )) == STATUS_SUCCESS)
|
||||
{
|
||||
- *(DWORD *)ProcessInformation = !reply->debugger_present;
|
||||
+ *(DWORD *)ProcessInformation = reply->debug_children;
|
||||
}
|
||||
}
|
||||
SERVER_END_REQ;
|
||||
diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c
|
||||
index 88d0417..a521447 100644
|
||||
--- a/dlls/ntdll/tests/info.c
|
||||
+++ b/dlls/ntdll/tests/info.c
|
||||
@@ -1345,11 +1345,7 @@ static void test_query_process_debug_flags(int argc, char **argv)
|
||||
status = pNtQueryInformationProcess(pi.hProcess, ProcessDebugFlags,
|
||||
&debug_flags, sizeof(debug_flags), NULL);
|
||||
ok(!status, "NtQueryInformationProcess failed, status %#x.\n", status);
|
||||
- if (!expected_flags)
|
||||
- ok(debug_flags == expected_flags, "Expected flag %x, got %x.\n", expected_flags, debug_flags);
|
||||
- else
|
||||
- todo_wine
|
||||
- ok(debug_flags == expected_flags, "Expected flag %x, got %x.\n", expected_flags, debug_flags);
|
||||
+ ok(debug_flags == expected_flags, "Expected flag %x, got %x.\n", expected_flags, debug_flags);
|
||||
|
||||
if (!(test_flags[i] & CREATE_SUSPENDED))
|
||||
{
|
||||
@@ -1379,11 +1375,7 @@ static void test_query_process_debug_flags(int argc, char **argv)
|
||||
status = pNtQueryInformationProcess(pi.hProcess, ProcessDebugFlags,
|
||||
&debug_flags, sizeof(debug_flags), NULL);
|
||||
ok(!status, "NtQueryInformationProcess failed, status %#x.\n", status);
|
||||
- if (expected_flags)
|
||||
- ok(debug_flags == expected_flags, "Expected flag %x, got %x.\n", expected_flags, debug_flags);
|
||||
- else
|
||||
- todo_wine
|
||||
- ok(debug_flags == expected_flags, "Expected flag %x, got %x.\n", expected_flags, debug_flags);
|
||||
+ ok(debug_flags == expected_flags, "Expected flag %x, got %x.\n", expected_flags, debug_flags);
|
||||
|
||||
ret = DebugActiveProcess(pi.dwProcessId);
|
||||
ok(ret, "DebugActiveProcess failed, last error %#x.\n", GetLastError());
|
||||
diff --git a/server/debugger.c b/server/debugger.c
|
||||
index 374f2ad..810e8d3 100644
|
||||
--- a/server/debugger.c
|
||||
+++ b/server/debugger.c
|
||||
@@ -443,6 +443,7 @@ static int debugger_attach( struct process *process, struct thread *debugger )
|
||||
resume_process( process );
|
||||
return 0;
|
||||
}
|
||||
+ process->debug_children = 0;
|
||||
return 1;
|
||||
|
||||
error:
|
||||
@@ -483,7 +484,6 @@ int debugger_detach( struct process *process, struct thread *debugger )
|
||||
|
||||
/* remove relationships between process and its debugger */
|
||||
process->debugger = NULL;
|
||||
- process->debug_children = 0;
|
||||
if (!set_process_debug_flag( process, 0 )) clear_error(); /* ignore error */
|
||||
|
||||
/* from this function */
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index e00b429..8433002 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -513,7 +513,7 @@ struct thread *create_process( int fd, struct thread *parent_thread, int inherit
|
||||
process->priority = PROCESS_PRIOCLASS_NORMAL;
|
||||
process->suspend = 0;
|
||||
process->is_system = 0;
|
||||
- process->debug_children = 0;
|
||||
+ process->debug_children = 1;
|
||||
process->is_terminating = 0;
|
||||
process->job = NULL;
|
||||
process->console = NULL;
|
||||
@@ -1228,7 +1228,7 @@ DECL_HANDLER(new_process)
|
||||
else if (parent->debugger && parent->debug_children)
|
||||
{
|
||||
set_process_debugger( process, parent->debugger );
|
||||
- process->debug_children = 1;
|
||||
+ /* debug_children is set to 1 by default */
|
||||
}
|
||||
|
||||
if (!(req->create_flags & CREATE_NEW_PROCESS_GROUP))
|
||||
@@ -1359,6 +1359,7 @@ DECL_HANDLER(get_process_info)
|
||||
reply->end_time = process->end_time;
|
||||
reply->cpu = process->cpu;
|
||||
reply->debugger_present = !!process->debugger;
|
||||
+ reply->debug_children = process->debug_children;
|
||||
release_object( process );
|
||||
}
|
||||
}
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 04814c9..bfb9089 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -818,7 +818,8 @@ struct rawinput_device
|
||||
int exit_code; /* process exit code */
|
||||
int priority; /* priority class */
|
||||
cpu_type_t cpu; /* CPU that this process is running on */
|
||||
- int debugger_present; /* process is being debugged */
|
||||
+ short int debugger_present; /* process is being debugged */
|
||||
+ short int debug_children; /* inherit debugger to child processes */
|
||||
@END
|
||||
|
||||
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: Fix implementation of NtQueryInformationProcess for ProcessDebugFlags
|
@@ -1,72 +0,0 @@
|
||||
From b63f6580710ea93ed81219bcad3f9cfab7f6c742 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 31 Oct 2015 22:06:57 +0100
|
||||
Subject: ntdll/tests: Add more tests for SystemHandleInformation.
|
||||
|
||||
---
|
||||
dlls/ntdll/tests/info.c | 36 ++++++++++++++++++++++++++++--------
|
||||
1 file changed, 28 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c
|
||||
index 83fdd53..8e0a806 100644
|
||||
--- a/dlls/ntdll/tests/info.c
|
||||
+++ b/dlls/ntdll/tests/info.c
|
||||
@@ -477,27 +477,47 @@ static void test_query_handle(void)
|
||||
ULONG ReturnLength;
|
||||
ULONG SystemInformationLength = sizeof(SYSTEM_HANDLE_INFORMATION);
|
||||
SYSTEM_HANDLE_INFORMATION* shi = HeapAlloc(GetProcessHeap(), 0, SystemInformationLength);
|
||||
+ HANDLE event_handle;
|
||||
+
|
||||
+ event_handle = CreateEventA(NULL, FALSE, FALSE, NULL);
|
||||
+ ok( event_handle != NULL, "CreateEventA failed %u\n", GetLastError() );
|
||||
|
||||
/* Request the needed length : a SystemInformationLength greater than one struct sets ReturnLength */
|
||||
+ ReturnLength = 0xdeadbeef;
|
||||
status = pNtQuerySystemInformation(SystemHandleInformation, shi, SystemInformationLength, &ReturnLength);
|
||||
todo_wine ok( status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got %08x\n", status);
|
||||
+ ok( ReturnLength != 0xdeadbeef, "Expected valid ReturnLength\n" );
|
||||
|
||||
SystemInformationLength = ReturnLength;
|
||||
shi = HeapReAlloc(GetProcessHeap(), 0, shi , SystemInformationLength);
|
||||
+
|
||||
+ ReturnLength = 0xdeadbeef;
|
||||
status = pNtQuerySystemInformation(SystemHandleInformation, shi, SystemInformationLength, &ReturnLength);
|
||||
if (status != STATUS_INFO_LENGTH_MISMATCH) /* vista */
|
||||
{
|
||||
- ok( status == STATUS_SUCCESS,
|
||||
- "Expected STATUS_SUCCESS, got %08x\n", status);
|
||||
-
|
||||
- /* Check if we have some return values */
|
||||
- trace("Number of Handles : %d\n", shi->Count);
|
||||
- todo_wine
|
||||
+ ULONG ExpectedLength = FIELD_OFFSET(SYSTEM_HANDLE_INFORMATION, Handle[shi->Count]);
|
||||
+ unsigned int i;
|
||||
+ BOOL found = FALSE;
|
||||
+
|
||||
+ ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status );
|
||||
+ todo_wine ok( ReturnLength == ExpectedLength, "Expected length %u, got %u\n", ExpectedLength, ReturnLength );
|
||||
+ todo_wine ok( shi->Count > 1, "Expected more than 1 handles, got %u\n", shi->Count );
|
||||
+ for (i = 0; i < shi->Count; i++)
|
||||
{
|
||||
- /* our implementation is a stub for now */
|
||||
- ok( shi->Count > 1, "Expected more than 1 handles, got (%d)\n", shi->Count);
|
||||
+ if (shi->Handle[i].OwnerPid == GetCurrentProcessId() &&
|
||||
+ (HANDLE)(ULONG_PTR)shi->Handle[i].HandleValue == event_handle)
|
||||
+ {
|
||||
+ found = TRUE;
|
||||
+ break;
|
||||
+ }
|
||||
}
|
||||
+ todo_wine ok( found, "Expected to find event handle in handle list\n" );
|
||||
}
|
||||
+
|
||||
+ status = pNtQuerySystemInformation(SystemHandleInformation, NULL, SystemInformationLength, &ReturnLength);
|
||||
+ ok( status == STATUS_ACCESS_VIOLATION, "Expected STATUS_ACCESS_VIOLATION, got %08x\n", status );
|
||||
+
|
||||
+ CloseHandle(event_handle);
|
||||
HeapFree( GetProcessHeap(), 0, shi);
|
||||
}
|
||||
|
||||
--
|
||||
2.6.1
|
||||
|
@@ -1,17 +1,19 @@
|
||||
From 5576d1d8409f51c9d5ed2311d3b3a7ece07f0c9b Mon Sep 17 00:00:00 2001
|
||||
From 1703d568d9756fbf3d6a11889386ff9355f33755 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 31 Oct 2015 22:17:43 +0100
|
||||
Subject: server: Implement wineserver call for SystemHandleInformation.
|
||||
Date: Thu, 24 Dec 2015 13:08:50 +0100
|
||||
Subject: server: Implement wineserver call for SystemHandleInformation. (v2)
|
||||
|
||||
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
|
||||
---
|
||||
dlls/ntdll/nt.c | 49 +++++++++++++++++++++++++++++++++++-------
|
||||
dlls/ntdll/tests/info.c | 8 +++----
|
||||
server/handle.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
dlls/ntdll/nt.c | 49 ++++++++++++++++++++++++++++++++++++-------
|
||||
dlls/ntdll/tests/info.c | 10 ++++-----
|
||||
server/handle.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
server/protocol.def | 16 ++++++++++++++
|
||||
4 files changed, 118 insertions(+), 12 deletions(-)
|
||||
server/trace.c | 17 +++++++++++++++
|
||||
5 files changed, 135 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
|
||||
index 8ea1ddd..6d360c3 100644
|
||||
index 8ea1ddd..55255a8 100644
|
||||
--- a/dlls/ntdll/nt.c
|
||||
+++ b/dlls/ntdll/nt.c
|
||||
@@ -2004,18 +2004,51 @@ NTSTATUS WINAPI NtQuerySystemInformation(
|
||||
@@ -41,7 +43,7 @@ index 8ea1ddd..6d360c3 100644
|
||||
- else ret = STATUS_INFO_LENGTH_MISMATCH;
|
||||
- FIXME("info_class SYSTEM_HANDLE_INFORMATION\n");
|
||||
+
|
||||
+ num_handles = (Length - FIELD_OFFSET(SYSTEM_HANDLE_INFORMATION, Handle)) / sizeof(SYSTEM_HANDLE_ENTRY);
|
||||
+ num_handles = (Length - FIELD_OFFSET( SYSTEM_HANDLE_INFORMATION, Handle )) / sizeof(SYSTEM_HANDLE_ENTRY);
|
||||
+ if (!(info = RtlAllocateHeap( GetProcessHeap(), 0, sizeof(*info) * num_handles )))
|
||||
+ return STATUS_NO_MEMORY;
|
||||
+
|
||||
@@ -52,10 +54,10 @@ index 8ea1ddd..6d360c3 100644
|
||||
+ {
|
||||
+ SYSTEM_HANDLE_INFORMATION *shi = SystemInformation;
|
||||
+ shi->Count = wine_server_reply_size( req ) / sizeof(*info);
|
||||
+ len = FIELD_OFFSET(SYSTEM_HANDLE_INFORMATION, Handle[shi->Count]);
|
||||
+ len = FIELD_OFFSET( SYSTEM_HANDLE_INFORMATION, Handle[shi->Count] );
|
||||
+ for (i = 0; i < shi->Count; i++)
|
||||
+ {
|
||||
+ memset(&shi->Handle[i], 0, sizeof(shi->Handle[i]));
|
||||
+ memset( &shi->Handle[i], 0, sizeof(shi->Handle[i]) );
|
||||
+ shi->Handle[i].OwnerPid = info[i].owner;
|
||||
+ shi->Handle[i].HandleValue = info[i].handle;
|
||||
+ shi->Handle[i].AccessMask = info[i].access;
|
||||
@@ -64,7 +66,7 @@ index 8ea1ddd..6d360c3 100644
|
||||
+ }
|
||||
+ else if (ret == STATUS_BUFFER_TOO_SMALL)
|
||||
+ {
|
||||
+ len = FIELD_OFFSET(SYSTEM_HANDLE_INFORMATION, Handle[reply->count]);
|
||||
+ len = FIELD_OFFSET( SYSTEM_HANDLE_INFORMATION, Handle[reply->count] );
|
||||
+ ret = STATUS_INFO_LENGTH_MISMATCH;
|
||||
+ }
|
||||
+ }
|
||||
@@ -75,10 +77,10 @@ index 8ea1ddd..6d360c3 100644
|
||||
break;
|
||||
case SystemCacheInformation:
|
||||
diff --git a/dlls/ntdll/tests/info.c b/dlls/ntdll/tests/info.c
|
||||
index 8e0a806..c0e2b1a 100644
|
||||
index 3219dbb..da509aa 100644
|
||||
--- a/dlls/ntdll/tests/info.c
|
||||
+++ b/dlls/ntdll/tests/info.c
|
||||
@@ -485,7 +485,7 @@ static void test_query_handle(void)
|
||||
@@ -487,7 +487,7 @@ static void test_query_handle(void)
|
||||
/* Request the needed length : a SystemInformationLength greater than one struct sets ReturnLength */
|
||||
ReturnLength = 0xdeadbeef;
|
||||
status = pNtQuerySystemInformation(SystemHandleInformation, shi, SystemInformationLength, &ReturnLength);
|
||||
@@ -87,31 +89,29 @@ index 8e0a806..c0e2b1a 100644
|
||||
ok( ReturnLength != 0xdeadbeef, "Expected valid ReturnLength\n" );
|
||||
|
||||
SystemInformationLength = ReturnLength;
|
||||
@@ -500,8 +500,8 @@ static void test_query_handle(void)
|
||||
BOOL found = FALSE;
|
||||
|
||||
ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status );
|
||||
- todo_wine ok( ReturnLength == ExpectedLength, "Expected length %u, got %u\n", ExpectedLength, ReturnLength );
|
||||
- todo_wine ok( shi->Count > 1, "Expected more than 1 handles, got %u\n", shi->Count );
|
||||
+ ok( ReturnLength == ExpectedLength, "Expected length %u, got %u\n", ExpectedLength, ReturnLength );
|
||||
+ ok( shi->Count > 1, "Expected more than 1 handles, got %u\n", shi->Count );
|
||||
for (i = 0; i < shi->Count; i++)
|
||||
{
|
||||
if (shi->Handle[i].OwnerPid == GetCurrentProcessId() &&
|
||||
@@ -511,7 +511,7 @@ static void test_query_handle(void)
|
||||
break;
|
||||
}
|
||||
}
|
||||
- todo_wine ok( found, "Expected to find event handle in handle list\n" );
|
||||
+ ok( found, "Expected to find event handle in handle list\n" );
|
||||
@@ -503,13 +503,13 @@ static void test_query_handle(void)
|
||||
}
|
||||
ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status );
|
||||
ExpectedLength = FIELD_OFFSET(SYSTEM_HANDLE_INFORMATION, Handle[shi->Count]);
|
||||
- todo_wine ok( ReturnLength == ExpectedLength || broken(ReturnLength == ExpectedLength - sizeof(DWORD)), /* Vista / 2008 */
|
||||
- "Expected length %u, got %u\n", ExpectedLength, ReturnLength );
|
||||
- todo_wine ok( shi->Count > 1, "Expected more than 1 handle, got %u\n", shi->Count );
|
||||
+ ok( ReturnLength == ExpectedLength || broken(ReturnLength == ExpectedLength - sizeof(DWORD)), /* Vista / 2008 */
|
||||
+ "Expected length %u, got %u\n", ExpectedLength, ReturnLength );
|
||||
+ ok( shi->Count > 1, "Expected more than 1 handle, got %u\n", shi->Count );
|
||||
for (i = 0, found = FALSE; i < shi->Count && !found; i++)
|
||||
found = (shi->Handle[i].OwnerPid == GetCurrentProcessId()) &&
|
||||
((HANDLE)(ULONG_PTR)shi->Handle[i].HandleValue == EventHandle);
|
||||
- todo_wine ok( found, "Expected to find event handle in handle list\n" );
|
||||
+ ok( found, "Expected to find event handle in handle list\n" );
|
||||
|
||||
CloseHandle(EventHandle);
|
||||
|
||||
status = pNtQuerySystemInformation(SystemHandleInformation, NULL, SystemInformationLength, &ReturnLength);
|
||||
diff --git a/server/handle.c b/server/handle.c
|
||||
index 5043ff7..98e4d01 100644
|
||||
index 5043ff7..05d71ba 100644
|
||||
--- a/server/handle.c
|
||||
+++ b/server/handle.c
|
||||
@@ -745,3 +745,60 @@ DECL_HANDLER(get_security_object)
|
||||
@@ -745,3 +745,59 @@ DECL_HANDLER(get_security_object)
|
||||
|
||||
release_object( obj );
|
||||
}
|
||||
@@ -133,15 +133,14 @@ index 5043ff7..98e4d01 100644
|
||||
+ if (!table)
|
||||
+ return 0;
|
||||
+
|
||||
+ if (!info->handle)
|
||||
+ {
|
||||
+ info->count += table->count;
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0, entry = table->entries; i <= table->last; i++, entry++)
|
||||
+ {
|
||||
+ if (!entry->ptr) continue;
|
||||
+ if (!info->handle)
|
||||
+ {
|
||||
+ info->count++;
|
||||
+ continue;
|
||||
+ }
|
||||
+ assert( info->count );
|
||||
+ handle = info->handle++;
|
||||
+ handle->owner = process->id;
|
||||
@@ -173,10 +172,10 @@ index 5043ff7..98e4d01 100644
|
||||
+ }
|
||||
+}
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 5b45078..200a2e9 100644
|
||||
index bfb9089..ea5bd61 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -3259,6 +3259,22 @@ enum coords_relative
|
||||
@@ -3266,6 +3266,22 @@ enum coords_relative
|
||||
VARARG(sd,security_descriptor); /* retrieved security descriptor */
|
||||
@END
|
||||
|
||||
@@ -192,13 +191,41 @@ index 5b45078..200a2e9 100644
|
||||
+@REQ(get_system_handles)
|
||||
+@REPLY
|
||||
+ unsigned int count; /* number of handles */
|
||||
+ VARARG(data,bytes); /* array of handle_infos */
|
||||
+ VARARG(data,handle_infos); /* array of handle_infos */
|
||||
+@END
|
||||
+
|
||||
+
|
||||
/* Create a mailslot */
|
||||
@REQ(create_mailslot)
|
||||
unsigned int access; /* wanted access rights */
|
||||
diff --git a/server/trace.c b/server/trace.c
|
||||
index 405a1c9..8a26fdb 100644
|
||||
--- a/server/trace.c
|
||||
+++ b/server/trace.c
|
||||
@@ -1142,6 +1142,23 @@ static void dump_varargs_rawinput_devices(const char *prefix, data_size_t size )
|
||||
fputc( '}', stderr );
|
||||
}
|
||||
|
||||
+static void dump_varargs_handle_infos( const char *prefix, data_size_t size )
|
||||
+{
|
||||
+ const struct handle_info *handle;
|
||||
+
|
||||
+ fprintf( stderr, "%s{", prefix );
|
||||
+ while (size >= sizeof(*handle))
|
||||
+ {
|
||||
+ handle = cur_data;
|
||||
+ fprintf( stderr, "{owner=%04x,handle=%04x,access=%08x}",
|
||||
+ handle->owner, handle->handle, handle->access );
|
||||
+ size -= sizeof(*handle);
|
||||
+ remove_data( sizeof(*handle) );
|
||||
+ if (size) fputc( ',', stderr );
|
||||
+ }
|
||||
+ fputc( '}', stderr );
|
||||
+}
|
||||
+
|
||||
typedef void (*dump_func)( const void *req );
|
||||
|
||||
/* Everything below this line is generated automatically by tools/make_requests */
|
||||
--
|
||||
2.6.1
|
||||
2.6.4
|
||||
|
@@ -1,14 +1,14 @@
|
||||
From f70ddf43d18cfeae70f0021005048c628b08c2b3 Mon Sep 17 00:00:00 2001
|
||||
From abaac4383f22f06b4d6e703d243f30de4bf90229 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 29 Nov 2015 00:34:04 +0100
|
||||
Subject: ntdll: Allow to set debug registers separately in NtSetContextThread.
|
||||
|
||||
---
|
||||
dlls/ntdll/signal_x86_64.c | 28 ++++++++++++++++++++++++++--
|
||||
1 file changed, 26 insertions(+), 2 deletions(-)
|
||||
dlls/ntdll/signal_x86_64.c | 24 ++++++++++++++++++++++--
|
||||
1 file changed, 22 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
|
||||
index 524de68..abe2072 100644
|
||||
index 524de68..02710a4 100644
|
||||
--- a/dlls/ntdll/signal_x86_64.c
|
||||
+++ b/dlls/ntdll/signal_x86_64.c
|
||||
@@ -1800,11 +1800,12 @@ __ASM_GLOBAL_FUNC( RtlCaptureContext,
|
||||
@@ -26,7 +26,7 @@ index 524de68..abe2072 100644
|
||||
"subq $40,%rsp\n\t"
|
||||
__ASM_CFI(".cfi_adjust_cfa_offset 40\n\t")
|
||||
"ldmxcsr 0x34(%rdi)\n\t" /* context->MxCsr */
|
||||
@@ -1852,6 +1853,29 @@ __ASM_GLOBAL_FUNC( set_cpu_context,
|
||||
@@ -1852,6 +1853,25 @@ __ASM_GLOBAL_FUNC( set_cpu_context,
|
||||
"movq 0xb0(%rdi),%rdi\n\t" /* context->Rdi */
|
||||
"iretq" );
|
||||
|
||||
@@ -39,10 +39,6 @@ index 524de68..abe2072 100644
|
||||
+void set_cpu_context( const CONTEXT *context )
|
||||
+{
|
||||
+ DWORD flags = context->ContextFlags & ~CONTEXT_AMD64;
|
||||
+
|
||||
+ if (flags & CONTEXT_DEBUG_REGISTERS)
|
||||
+ FIXME( "setting debug registers not supported\n" );
|
||||
+
|
||||
+ if (flags & CONTEXT_FULL)
|
||||
+ {
|
||||
+ if (!(flags & CONTEXT_CONTROL))
|
||||
@@ -57,5 +53,5 @@ index 524de68..abe2072 100644
|
||||
* copy_context
|
||||
*
|
||||
--
|
||||
2.6.2
|
||||
2.6.4
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user