Compare commits

...

40 Commits

Author SHA1 Message Date
Alistair Leslie-Hughes
aa0c8391eb Updated odbc32-fixes patchset
Thanks Steve Fawcett.
2025-04-10 08:25:33 +10:00
Alistair Leslie-Hughes
36020b4a0e Updated vkd3d-latest patchset
Squash and update.
2025-04-10 08:23:17 +10:00
Elizabeth Figura
4fa7fcd631 Rebase against 647004cd5d7ee93ad8b53abb8939da87be3e25a0. 2025-04-09 17:11:35 -05:00
Elizabeth Figura
ebf36e4717 d3dx9_36-DDS: Remove patch.
This was implemented upstream by e12a1d283a0d4a14c2394a05052b06f0de16f1a6.
2025-04-09 16:47:07 -05:00
Alistair Leslie-Hughes
835c92a298 Release v10.5 2025-04-06 12:29:00 +10:00
Alistair Leslie-Hughes
708eb528c0 Rebase against f3843ea16b85012d0d0ca0f4f95a4c87c97d03f9. 2025-04-05 11:53:02 +11:00
Alistair Leslie-Hughes
77a24c72b8 Updated vkd3d-latest patchset 2025-04-05 11:52:49 +11:00
Elizabeth Figura
8924ee42d8 Rebase against e956c4ec71dd0f41090df3863e6f937963b2b7d9. 2025-04-02 18:32:00 -05:00
Elizabeth Figura
e1b2c45272 Rebase against 8e2aea6290e823d2f5023e2bff5c2fec0880a65d. 2025-04-02 13:37:06 -05:00
Elizabeth Figura
9b43d37fd1 winex11-_NET_ACTIVE_WINDOW: Restore.
This was not actually implemented upstream. Upstream does not send events; it only so far tracks changes made by other applications.
2025-04-02 12:59:45 -05:00
Paul Gofman
5b64f435e9 ntdll-ForceBottomUpAlloc: Rebase and re-enable. 2025-04-01 14:56:02 -06:00
Paul Gofman
441fd5f422 Rebase against 908f9eb20ff7511fe7f717d1a72d0e2e8911887d. 2025-04-01 12:28:07 -06:00
Alistair Leslie-Hughes
c103bbb0b6 Rebase against cf6bdfd2260b4e2a29e72a241ad60f6f39712fa3. 2025-03-30 08:38:01 +11:00
Elizabeth Figura
d88d44f1d9 ntdll-Syscall_Emulation: Also trap syscalls in the top-down reserved area.
Patch from "mkrsym1@gmail.com".
2025-03-25 22:17:15 -05:00
Elizabeth Figura
5e84688c5f Rebase against 3379ee2e6b5f610b9f82d31be9417095372ebc5e. 2025-03-25 21:57:58 -05:00
Alistair Leslie-Hughes
c110178b0d Release v10.4 2025-03-22 17:50:09 +11:00
Alistair Leslie-Hughes
796c6b3a44 Added msxml3-element_props patchset 2025-03-22 15:34:38 +11:00
Alistair Leslie-Hughes
2ae11f25b0 Updated vkd3d-latest patchset 2025-03-22 15:33:02 +11:00
Elizabeth Figura
30f69aa45a Staging: Avoid leaking staging_event for every thread.
Just leak it for the first one.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57989
2025-03-20 22:20:58 -05:00
Elizabeth Figura
bb826f2185 Rebase against ced1402d20ba874f9634a306630455366c3865b5. 2025-03-19 17:31:39 -05:00
Elizabeth Figura
c5767aad30 Rebase against e66405a5040ac233ebdc7bdd925919ad63b4dd69. 2025-03-19 09:33:51 -05:00
Alistair Leslie-Hughes
fa0cd8ead0 Rebase against 6298b0cab2086ae61f46b284d22c420dfbb2b44e. 2025-03-18 10:16:45 +11:00
Alistair Leslie-Hughes
f247cd5d6b Rebase against b201cd518f3448553c31e329d5504b94f21d84ce. 2025-03-13 16:44:46 +11:00
Alistair Leslie-Hughes
b17a3d6c54 Updated vkd3d-latest patchset
Squash to latest.
2025-03-13 07:08:10 +11:00
Elizabeth Figura
c0e113dd3a Rebase against 10bb431e0d0760d72921106c7607d66808b939bb. 2025-03-12 10:41:26 -05:00
Alistair Leslie-Hughes
946648d13f Release v10.3 2025-03-08 15:02:32 +11:00
Alistair Leslie-Hughes
d9670d89d1 Added msxml3-whitespace patchset 2025-03-08 13:47:30 +11:00
Alistair Leslie-Hughes
4914f150c5 Updated vkd3d-latest patchset 2025-03-07 10:10:10 +11:00
Alistair Leslie-Hughes
0af25de63c Rebase against 1f947b1c62c4f6fdfad4da812567cf33c904c1eb. 2025-03-07 10:09:45 +11:00
Elizabeth Figura
0682c26496 Rebase against 6e6334d4293b235fe11f05c556acf6cecb173412. 2025-03-03 16:36:08 -06:00
Elizabeth Figura
db49cb3767 Rebase against d17225a89cfb45988a89f60803756e7df4e68cc5. 2025-02-28 17:27:03 -06:00
Elizabeth Figura
6f8931b39a Rebase against 0bf15e3e0715ebda735e9857cbcb36ebc491293f. 2025-02-27 16:34:34 -06:00
Elizabeth Figura
0e1220c76d d3dx9_36-DDS: Rebase and re-enable.
Patch 0001 was implemented upstream by ee4ad2a0a460cf9737c7d0d6057b57528e8ea912.
2025-02-27 16:01:51 -06:00
Elizabeth Figura
acb3c0bb3c server-Realtime_Priority: Remove patch set.
This functionality was introduced upstream by 945efda7fe4c95276a1c64a8d10368726d834937.
2025-02-27 16:01:44 -06:00
Alistair Leslie-Hughes
a381f356d6 Updated vkd3d-latest patchset 2025-02-27 09:47:00 +11:00
Alistair Leslie-Hughes
b69d02ba02 Rebase against 32a81ee2135c67e393e49cce60ef8ebfbaefb531. 2025-02-27 09:44:42 +11:00
Alistair Leslie-Hughes
3546551685 Updated vkd3d-latest patchset 2025-02-25 12:01:15 +11:00
Alistair Leslie-Hughes
2439dab96c Rebase against 4c06d354b8093a8979316186474213bbc1c68904. 2025-02-25 10:37:42 +11:00
Alistair Leslie-Hughes
f5190ef988 Removed upstream patches 2025-02-23 17:47:18 +11:00
Alistair Leslie-Hughes
ec5fbb99b7 Rebase against e1b8e7f6ec755afd251a3b7af0e632c6e4d74a64. 2025-02-23 08:27:19 +11:00
79 changed files with 26804 additions and 6940 deletions

View File

@@ -1,15 +1,15 @@
From 601da0ae0c6b22f37d20e6e0f10558093277eca9 Mon Sep 17 00:00:00 2001
From 3dc4a148d7c91afea8f589f47daca82c5c27b7c1 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 2 Oct 2014 19:44:31 +0200
Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging
branch name and version.
---
dlls/ntdll/loader.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
dlls/ntdll/loader.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 5f84ca7e23b..fabf394fbe5 100644
index 74eb1b7f500..95639558155 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -43,6 +43,7 @@ WINE_DECLARE_DEBUG_CHANNEL(relay);
@@ -20,7 +20,7 @@ index 5f84ca7e23b..fabf394fbe5 100644
#ifdef _WIN64
#define DEFAULT_SECURITY_COOKIE_64 (((ULONGLONG)0x00002b99 << 32) | 0x2ddfa232)
@@ -3828,6 +3829,7 @@ void WINAPI LdrShutdownProcess(void)
@@ -3870,6 +3871,7 @@ void WINAPI LdrShutdownProcess(void)
process_detach();
}
@@ -28,7 +28,7 @@ index 5f84ca7e23b..fabf394fbe5 100644
/******************************************************************
* RtlExitUserProcess (NTDLL.@)
@@ -4322,6 +4324,9 @@ static void release_address_space(void)
@@ -4366,6 +4368,9 @@ static void release_address_space(void)
*/
void loader_init( CONTEXT *context, void **entry )
{
@@ -38,13 +38,13 @@ index 5f84ca7e23b..fabf394fbe5 100644
static int attach_done;
NTSTATUS status;
ULONG_PTR cookie, port = 0;
@@ -4407,7 +4412,18 @@ void loader_init( CONTEXT *context, void **entry )
@@ -4455,6 +4460,20 @@ void loader_init( CONTEXT *context, void **entry )
arm64ec_thread_init();
#endif
wm = get_modref( NtCurrentTeb()->Peb->ImageBaseAddress );
+ /* This hunk occasionally applies in the wrong place;
+ * add a comment here to try to prevent that. */
}
+ }
+ RtlInitUnicodeString( &staging_event_string, L"\\__wine_staging_warn_event" );
+ InitializeObjectAttributes( &staging_event_attr, &staging_event_string, OBJ_OPENIF, NULL, NULL );
+ if (NtCreateEvent( &staging_event, EVENT_ALL_ACCESS, &staging_event_attr, NotificationEvent, FALSE ) == STATUS_SUCCESS)
@@ -53,10 +53,12 @@ index 5f84ca7e23b..fabf394fbe5 100644
+ FIXME_(winediag)("Please mention your exact version when filing bug reports on winehq.org.\n");
+ }
+ else
+ {
+ WARN_(winediag)("wine-staging %s is a testing version containing experimental patches.\n", wine_get_version());
+ NtClose( staging_event );
}
NtCurrentTeb()->FlsSlots = fls_alloc_data();
--
2.45.2
2.47.2

View File

@@ -1,32 +0,0 @@
From 5d9d9cbdb4043848aa5ebdd8a1349d9c876650e3 Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Sun, 11 Jan 2015 16:18:03 +0100
Subject: [PATCH] d3dx9_36: Add support for FOURCC surface to
save_dds_surface_to_memory.
---
dlls/d3dx9_36/surface.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index 26809a47e18..db334ee83f1 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -433,6 +433,14 @@ static HRESULT d3dformat_to_dds_pixel_format(struct dds_pixel_format *pixel_form
}
}
+ /* Reuse dds_fourcc_to_d3dformat as D3DFORMAT and FOURCC are DWORD with same values */
+ if (dds_fourcc_to_d3dformat(d3dformat) != D3DFMT_UNKNOWN)
+ {
+ pixel_format->flags |= DDS_PF_FOURCC;
+ pixel_format->fourcc = d3dformat;
+ return D3D_OK;
+ }
+
WARN("Unknown pixel format %#x.\n", d3dformat);
return E_NOTIMPL;
}
--
2.35.1

View File

@@ -1,118 +0,0 @@
From 96af775034dae1c0b133b315c45b7172090d3498 Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Sun, 11 Jan 2015 16:29:30 +0100
Subject: [PATCH] d3dx9_36: Improve D3DXSaveTextureToFile to save simple
texture to dds file.
---
dlls/d3dx9_36/d3dx9_private.h | 2 ++
dlls/d3dx9_36/surface.c | 63 +++++++++++++++++++++++++++++++++++
dlls/d3dx9_36/texture.c | 5 +--
3 files changed, 66 insertions(+), 4 deletions(-)
diff --git a/dlls/d3dx9_36/d3dx9_private.h b/dlls/d3dx9_36/d3dx9_private.h
index 34a9f6eec7f..878dff3fc01 100644
--- a/dlls/d3dx9_36/d3dx9_private.h
+++ b/dlls/d3dx9_36/d3dx9_private.h
@@ -178,6 +178,8 @@ HRESULT lock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect, D3DLO
IDirect3DSurface9 **temp_surface, BOOL write);
HRESULT unlock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect,
IDirect3DSurface9 *temp_surface, BOOL update);
+HRESULT save_dds_texture_to_memory(ID3DXBuffer **dst_buffer, IDirect3DBaseTexture9 *src_texture,
+ const PALETTEENTRY *src_palette);
HRESULT d3dx_pixels_init(const void *data, uint32_t row_pitch, uint32_t slice_pitch,
const PALETTEENTRY *palette, D3DFORMAT format, uint32_t left, uint32_t top, uint32_t right, uint32_t bottom,
uint32_t front, uint32_t back, struct d3dx_pixels *pixels);
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index 31bce97bbab..212d452c654 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -574,6 +574,69 @@ static HRESULT save_dds_surface_to_memory(ID3DXBuffer **dst_buffer, IDirect3DSur
return D3D_OK;
}
+static HRESULT get_surface(D3DRESOURCETYPE type, struct IDirect3DBaseTexture9 *tex,
+ int face, UINT level, struct IDirect3DSurface9 **surf)
+{
+ switch (type)
+ {
+ case D3DRTYPE_TEXTURE:
+ return IDirect3DTexture9_GetSurfaceLevel((IDirect3DTexture9*) tex, level, surf);
+ case D3DRTYPE_CUBETEXTURE:
+ return IDirect3DCubeTexture9_GetCubeMapSurface((IDirect3DCubeTexture9*) tex, face, level, surf);
+ default:
+ ERR("Unexpected texture type\n");
+ return E_NOTIMPL;
+ }
+}
+
+HRESULT save_dds_texture_to_memory(ID3DXBuffer **dst_buffer, IDirect3DBaseTexture9 *src_texture, const PALETTEENTRY *src_palette)
+{
+ HRESULT hr;
+ D3DRESOURCETYPE type;
+ UINT mip_levels;
+ IDirect3DSurface9 *surface;
+
+ type = IDirect3DBaseTexture9_GetType(src_texture);
+
+ if ((type != D3DRTYPE_TEXTURE) && (type != D3DRTYPE_CUBETEXTURE) && (type != D3DRTYPE_VOLUMETEXTURE))
+ return D3DERR_INVALIDCALL;
+
+ if (type == D3DRTYPE_CUBETEXTURE)
+ {
+ FIXME("Cube texture not supported yet\n");
+ return E_NOTIMPL;
+ }
+ else if (type == D3DRTYPE_VOLUMETEXTURE)
+ {
+ FIXME("Volume texture not supported yet\n");
+ return E_NOTIMPL;
+ }
+
+ mip_levels = IDirect3DTexture9_GetLevelCount(src_texture);
+
+ if (mip_levels > 1)
+ {
+ FIXME("Mipmap not supported yet\n");
+ return E_NOTIMPL;
+ }
+
+ if (src_palette)
+ {
+ FIXME("Saving surfaces with palettized pixel formats not implemented yet\n");
+ return E_NOTIMPL;
+ }
+
+ hr = get_surface(type, src_texture, D3DCUBEMAP_FACE_POSITIVE_X, 0, &surface);
+
+ if (SUCCEEDED(hr))
+ {
+ hr = save_dds_surface_to_memory(dst_buffer, surface, NULL);
+ IDirect3DSurface9_Release(surface);
+ }
+
+ return hr;
+}
+
HRESULT load_cube_texture_from_dds(IDirect3DCubeTexture9 *cube_texture, const void *src_data,
const PALETTEENTRY *palette, DWORD filter, DWORD color_key, const D3DXIMAGE_INFO *src_info)
{
diff --git a/dlls/d3dx9_36/texture.c b/dlls/d3dx9_36/texture.c
index b42c9db3f2d..d84bac25cfe 100644
--- a/dlls/d3dx9_36/texture.c
+++ b/dlls/d3dx9_36/texture.c
@@ -1847,10 +1847,7 @@ HRESULT WINAPI D3DXSaveTextureToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE
if (!dst_buffer || !src_texture) return D3DERR_INVALIDCALL;
if (file_format == D3DXIFF_DDS)
- {
- FIXME("DDS file format isn't supported yet\n");
- return E_NOTIMPL;
- }
+ return save_dds_texture_to_memory(dst_buffer, src_texture, src_palette);
type = IDirect3DBaseTexture9_GetType(src_texture);
switch (type)
--
2.45.2

View File

@@ -1,2 +0,0 @@
Fixes: [26898] Support for DDS file format in D3DXSaveTextureToFileInMemory
Disabled: True

View File

@@ -1,87 +0,0 @@
From d258e0c4428f3d5b7c0b6f4b31058d8710244dd7 Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Wed, 14 Aug 2013 09:31:31 +0200
Subject: d3dx9_36: Filter out D3DCompile warning messages that are not present
with D3DCompileShader. (try 4)
This patch fixes vertex processing issue of bug 33770.
The problem comes from the fact that even if the call succeeds,
the game interprets a non null error_messages pointer as an error.
By calling D3DCompile we use a newer version of the compiler which is more
strict and generates the following warning.
- warning X3206: 'dot': implicit truncation of vector type
- warning X3206: implicit truncation of vector type
- warning X3206: 'mul': implicit truncation of vector type
D3DCompileShader does not generate such warnings.
These is confirmed in the DX SDK release note:
New Warning X3206: Implicit Truncation of Vector Type
Beginning in the August 2009 release of the DirectX SDK, the compiler will warn
when an implicit truncation of a vector type occurs.
The warnings cannot be disable so this patch filters out these strings in D3DCompileShader
and reset the error messages pointer if the resulting buffer is empty.
Try 2:
- only filter out lines containing "X3206:" in case d3dcompiler_43 has localization
Try 3:
- use move in place instead of copying the buffer
Try 4:
- filter simplification by Sebastian and remove 'mul' testing left-out in search string
---
dlls/d3dx9_36/shader.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
index 5ea3d13..646d3dc 100644
--- a/dlls/d3dx9_36/shader.c
+++ b/dlls/d3dx9_36/shader.c
@@ -450,6 +450,41 @@ HRESULT WINAPI D3DXCompileShader(const char *data, UINT length, const D3DXMACRO
}
}
+ /* Filter out D3DCompile warning messages that are not present with D3DCompileShader */
+ if (SUCCEEDED(hr) && error_msgs && *error_msgs)
+ {
+ char *messages = ID3DXBuffer_GetBufferPointer(*error_msgs);
+ DWORD size = ID3DXBuffer_GetBufferSize(*error_msgs);
+
+ /* Ensure messages are null terminated for safe processing */
+ if (size) messages[size - 1] = 0;
+
+ while (size > 1)
+ {
+ char *prev, *next;
+
+ /* Warning has the form "warning X3206: ... implicit truncation of vector type"
+ but we only search for "X3206:" in case d3dcompiler_43 has localization */
+ prev = next = strstr(messages, "X3206:");
+ if (!prev) break;
+
+ /* get pointer to beginning and end of current line */
+ while (prev > messages && *(prev - 1) != '\n') prev--;
+ while (next < messages + size - 1 && *next != '\n') next++;
+ if (next < messages + size - 1 && *next == '\n') next++;
+
+ memmove(prev, next, messages + size - next);
+ size -= (next - prev);
+ }
+
+ /* Only return a buffer if the resulting string is not empty as some apps depend on that */
+ if (size <= 1)
+ {
+ ID3DXBuffer_Release(*error_msgs);
+ *error_msgs = NULL;
+ }
+ }
+
return hr;
}
--
2.1.2

View File

@@ -1 +0,0 @@
Fixes: [33770] D3DCompileShader should filter specific warning messages

View File

@@ -1,182 +0,0 @@
From ae80ae124a784078a9838a8aca4b3af308d645dd Mon Sep 17 00:00:00 2001
From: Patrick Hibbs <hibbsncc1701@gmail.com>
Date: Fri, 30 Sep 2022 17:58:15 -0400
Subject: [PATCH] d3dx9: Implement d3dx_effect_SetRawValue
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46012
Signed-off-by: Patrick Hibbs <hibbsncc1701@gmail.com>
---
dlls/d3dx9_36/effect.c | 154 ++++++++++++++++++++++++++++++++++++++++-
1 file changed, 152 insertions(+), 2 deletions(-)
diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c
index ea965ce789b..625af4af36b 100644
--- a/dlls/d3dx9_36/effect.c
+++ b/dlls/d3dx9_36/effect.c
@@ -4445,10 +4445,160 @@ static HRESULT WINAPI d3dx_effect_CloneEffect(ID3DXEffect *iface, IDirect3DDevic
static HRESULT WINAPI d3dx_effect_SetRawValue(ID3DXEffect *iface, D3DXHANDLE parameter, const void *data,
UINT byte_offset, UINT bytes)
{
- FIXME("iface %p, parameter %p, data %p, byte_offset %u, bytes %u stub!\n",
+ struct d3dx_effect *effect = impl_from_ID3DXEffect(iface);
+ struct d3dx_parameter *param = (parameter == INVALID_HANDLE_VALUE) ? NULL : get_valid_parameter(effect, parameter);
+ const unsigned int single_size = sizeof(DWORD);
+ unsigned int x, index_offset, remaining_byte_offset, remaining_bytes;
+ void *raw;
+
+ TRACE("iface %p, parameter %p, data %p, byte_offset %u, bytes %u.\n",
iface, parameter, data, byte_offset, bytes);
- return E_NOTIMPL;
+ /* pendentic */
+ index_offset = 0;
+ remaining_byte_offset = 0;
+
+ /* BOOLs and Matries with a single value copy require sanitization of the
+ byte_offset.
+
+ Specificly, matries with a single value copy only allow byte shifts that
+ are not multiples of the value (DWORD) size. For multiples, we increment
+ the index of the promoted data type, then add any remainder as a byte
+ offset.
+
+ For BOOLs, due to their value sanitization, we only care about the
+ index of their promoted data type. Unless it's a non value size matrix.
+ In that case we do care about the byte offset.
+ */
+ if (byte_offset > 0 && (param->type == D3DXPT_BOOL ||
+ (param->class == D3DXPC_MATRIX_COLUMNS ||
+ param->class == D3DXPC_MATRIX_ROWS)))
+ {
+ remaining_byte_offset = byte_offset % single_size;
+ if (remaining_byte_offset != 0)
+ index_offset = byte_offset / single_size;
+ else
+ index_offset = byte_offset;
+ if (param->type != D3DXPT_BOOL || (bytes != single_size &&
+ (param->class == D3DXPC_MATRIX_COLUMNS ||
+ param->class == D3DXPC_MATRIX_ROWS)))
+ {
+ index_offset = index_offset * single_size;
+ if (param->type != D3DXPT_BOOL)
+ index_offset = index_offset * single_size;
+ }
+ }
+
+ /* If parameter is bad, we are expected to throw C0000005. */
+ switch (param->class)
+ {
+ case D3DXPC_STRUCT:
+ break;
+ case D3DXPC_OBJECT:
+ raw = param_get_data_and_dirtify(effect, param, param->bytes, TRUE);
+ if (data && bytes)
+ {
+ if (((char*)raw)[0] != '\0')
+ {
+ memset(raw, '\0', param->bytes);
+ return S_OK; /* This returns a false success. */
+ }
+ else
+ {
+ return D3DERR_INVALIDCALL;
+ }
+ }
+ break;
+ case D3DXPC_SCALAR:
+ raw = param_get_data_and_dirtify(effect, param, param->bytes, TRUE);
+ if (param->type == D3DXPT_BOOL)
+ *(BOOL*)raw = *(BOOL*)data ? TRUE : FALSE;
+ else
+ memcpy((unsigned char*)raw + byte_offset, data, bytes);
+ return S_OK;
+ break;
+ case D3DXPC_VECTOR:
+ raw = (unsigned char*)param_get_data_and_dirtify(effect, param, param->bytes, TRUE);
+ if (param->type == D3DXPT_BOOL)
+ {
+ raw = (unsigned char*)raw + index_offset;
+ *(DWORD*)raw = *(DWORD*)data ? TRUE : FALSE;
+ memset((unsigned char*)raw + single_size, \
+ '\0', param->bytes - index_offset - single_size);
+ }
+ else
+ {
+ raw = (unsigned char*)raw + byte_offset;
+ for (x = 0; (x * single_size) + byte_offset < param->bytes && (x * single_size) < bytes; x++)
+ {
+ memcpy((unsigned char*)raw + (x * single_size), \
+ (unsigned char*)data + (x * single_size), \
+ single_size);
+ }
+ }
+ return S_OK;
+ break;
+ case D3DXPC_MATRIX_COLUMNS:
+ case D3DXPC_MATRIX_ROWS:
+ raw = (unsigned char*)param_get_data_and_dirtify(effect, param, param->bytes, TRUE);
+ if (param->type == D3DXPT_BOOL)
+ {
+ if (bytes == single_size)
+ {
+ raw = (unsigned char*)raw + index_offset;
+ for (x = 0; (x * single_size) < param->bytes - index_offset; x++)
+ {
+ remaining_bytes = param->bytes - index_offset - \
+ (x * single_size) - single_size;
+ *(DWORD*)raw = *(DWORD*)data ? TRUE : FALSE;
+ memset((unsigned char*)raw + single_size, \
+ '\0', (remaining_bytes > (single_size * 4) ? \
+ single_size * 4 : remaining_bytes));
+ raw = (unsigned char*)raw + (remaining_bytes > (single_size * 4) ? \
+ single_size * 4 : remaining_bytes);
+ }
+ }
+ else
+ {
+ raw = (unsigned char*)raw + index_offset;
+ for (x = 0; (x * single_size) < param->bytes - index_offset; x++)
+ {
+ ((DWORD*)raw)[x] = ((DWORD*)data)[x] ? TRUE : FALSE;
+ }
+ }
+ }
+ else
+ {
+ if (bytes == single_size)
+ {
+ raw = (unsigned char*)raw + index_offset + remaining_byte_offset;
+ for (x = 0; (x * single_size) + byte_offset < param->bytes && (x * single_size) < bytes; x++)
+ {
+ memcpy((unsigned char*)raw + (x * single_size), \
+ (unsigned char*)data + (x * single_size), \
+ single_size);
+ }
+ }
+ else
+ {
+ raw = (unsigned char*)raw + byte_offset;
+ for (x = 0; byte_offset + (x * single_size) < param->bytes &&
+ (x * single_size) < bytes; x++)
+ {
+ memcpy((unsigned char*)raw + (x * single_size), \
+ (unsigned char*)data + (x * single_size), \
+ single_size);
+ }
+ }
+ }
+ return S_OK;
+ break;
+ default:
+ FIXME("Unhandled param class %s.\n", debug_d3dxparameter_class(param->class));
+ break;
+ };
+
+ return D3DERR_INVALIDCALL;
}
#endif
--
2.43.0

View File

@@ -1,3 +0,0 @@
Fixes: [46012] d3d9: Implement ID3DXEffect::SetRawValue
# https://gitlab.winehq.org/wine/wine/-/merge_requests/979

View File

@@ -1,4 +1,4 @@
From 9b9b36ccc66866ba142ce1f0d12190025ac2e7f7 Mon Sep 17 00:00:00 2001
From da832ae3626406e9aee5f9f78bce01f2a0d49691 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Thu, 7 Jun 2018 20:09:59 -0500
Subject: [PATCH] server: Create server objects for eventfd-based
@@ -9,13 +9,13 @@ Subject: [PATCH] server: Create server objects for eventfd-based
server/esync.c | 318 ++++++++++++++++++++++++++++++++++++++++++++
server/esync.h | 24 ++++
server/main.c | 4 +
server/protocol.def | 25 +++-
5 files changed, 371 insertions(+), 1 deletion(-)
server/protocol.def | 24 ++++
5 files changed, 371 insertions(+)
create mode 100644 server/esync.c
create mode 100644 server/esync.h
diff --git a/server/Makefile.in b/server/Makefile.in
index ae502dbf17d..b164193ef20 100644
index 7e571ac2ba6..9632c4e694f 100644
--- a/server/Makefile.in
+++ b/server/Makefile.in
@@ -11,6 +11,7 @@ SOURCES = \
@@ -381,7 +381,7 @@ index 00000000000..00f9e638d83
+extern int do_esync(void);
+void esync_init(void);
diff --git a/server/main.c b/server/main.c
index ddda5f4e86e..5062d0999fa 100644
index e014ec535ff..052667b4c6b 100644
--- a/server/main.c
+++ b/server/main.c
@@ -34,6 +34,7 @@
@@ -401,20 +401,12 @@ index ddda5f4e86e..5062d0999fa 100644
+
if (debug_level) fprintf( stderr, "wineserver: starting (pid=%ld)\n", (long) getpid() );
set_current_time();
init_scheduler();
init_signals();
diff --git a/server/protocol.def b/server/protocol.def
index e86d3414247..03bc0aeb11e 100644
index fa4ca4aaa9e..a9ee996a8ab 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3867,7 +3867,6 @@ struct handle_info
obj_handle_t handle; /* process handle */
@END
-
/* Iterate thread list for process */
@REQ(get_next_thread)
obj_handle_t process; /* process handle */
@@ -3879,6 +3878,29 @@ struct handle_info
@@ -4080,6 +4080,29 @@ struct handle_info
obj_handle_t handle; /* next thread handle */
@END
@@ -444,11 +436,11 @@ index e86d3414247..03bc0aeb11e 100644
/* Setup keyboard auto-repeat */
@REQ(set_keyboard_repeat)
@@ -3888,3 +3910,4 @@ struct handle_info
@@ -4089,3 +4112,4 @@ struct handle_info
@REPLY
int enable; /* previous state of auto-repeat enable */
@END
+
--
2.43.0
2.47.2

View File

@@ -1,4 +1,4 @@
From 914fe97f7dc20348ec3e1a2e18bcefa9b7cab463 Mon Sep 17 00:00:00 2001
From 16f5ebca082d65ca9abeddb857f30ef58f590ea3 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Fri, 8 Jun 2018 18:51:40 -0500
Subject: [PATCH] server: Add an object operation to grab the esync file
@@ -44,7 +44,7 @@ Split off to decrease patch size.
35 files changed, 71 insertions(+)
diff --git a/server/async.c b/server/async.c
index 749c547af4f..2377c737e98 100644
index d2d929c9709..9768a4932a6 100644
--- a/server/async.c
+++ b/server/async.c
@@ -78,6 +78,7 @@ static const struct object_ops async_ops =
@@ -100,7 +100,7 @@ index 91f159bc7c9..0df7fd2f18e 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/completion.c b/server/completion.c
index f9e68c523f1..9093132efac 100644
index 99680ae0680..3d750154d1b 100644
--- a/server/completion.c
+++ b/server/completion.c
@@ -92,6 +92,7 @@ static const struct object_ops completion_wait_ops =
@@ -120,10 +120,10 @@ index f9e68c523f1..9093132efac 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/console.c b/server/console.c
index b64283baf4a..1cc9eea6a50 100644
index de6f4e73e31..9bdba479e8c 100644
--- a/server/console.c
+++ b/server/console.c
@@ -81,6 +81,7 @@ static const struct object_ops console_ops =
@@ -84,6 +84,7 @@ static const struct object_ops console_ops =
console_add_queue, /* add_queue */
remove_queue, /* remove_queue */
console_signaled, /* signaled */
@@ -131,7 +131,7 @@ index b64283baf4a..1cc9eea6a50 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
console_get_fd, /* get_fd */
@@ -158,6 +159,7 @@ static const struct object_ops console_server_ops =
@@ -161,6 +162,7 @@ static const struct object_ops console_server_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
console_server_signaled, /* signaled */
@@ -139,15 +139,15 @@ index b64283baf4a..1cc9eea6a50 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
console_server_get_fd, /* get_fd */
@@ -227,6 +229,7 @@ static const struct object_ops screen_buffer_ops =
screen_buffer_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -230,6 +232,7 @@ static const struct object_ops screen_buffer_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
screen_buffer_signaled, /* signaled */
+ NULL, /* get_esync_fd */
NULL, /* satisfied */
no_satisfied, /* satisfied */
no_signal, /* signal */
screen_buffer_get_fd, /* get_fd */
@@ -276,6 +279,7 @@ static const struct object_ops console_device_ops =
@@ -279,6 +282,7 @@ static const struct object_ops console_device_ops =
no_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -155,23 +155,23 @@ index b64283baf4a..1cc9eea6a50 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
@@ -313,6 +317,7 @@ static const struct object_ops console_input_ops =
console_input_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -318,6 +322,7 @@ static const struct object_ops console_input_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
console_input_signaled, /* signaled */
+ NULL, /* get_esync_fd */
no_satisfied, /* satisfied */
no_signal, /* signal */
console_input_get_fd, /* get_fd */
@@ -370,6 +375,7 @@ static const struct object_ops console_output_ops =
console_output_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -377,6 +382,7 @@ static const struct object_ops console_output_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
console_output_signaled, /* signaled */
+ NULL, /* get_esync_fd */
no_satisfied, /* satisfied */
no_signal, /* signal */
console_output_get_fd, /* get_fd */
@@ -428,6 +434,7 @@ static const struct object_ops console_connection_ops =
@@ -435,6 +441,7 @@ static const struct object_ops console_connection_ops =
no_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -180,7 +180,7 @@ index b64283baf4a..1cc9eea6a50 100644
no_signal, /* signal */
console_connection_get_fd, /* get_fd */
diff --git a/server/debugger.c b/server/debugger.c
index c59a0abea77..ca04d4c71ce 100644
index 39a740e07e5..0c01ec1c0d3 100644
--- a/server/debugger.c
+++ b/server/debugger.c
@@ -86,6 +86,7 @@ static const struct object_ops debug_event_ops =
@@ -200,7 +200,7 @@ index c59a0abea77..ca04d4c71ce 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/device.c b/server/device.c
index 436dac6bfe9..f730fa81afa 100644
index 1f93cca437d..a0608aa6164 100644
--- a/server/device.c
+++ b/server/device.c
@@ -66,6 +66,7 @@ static const struct object_ops irp_call_ops =
@@ -236,7 +236,7 @@ index 436dac6bfe9..f730fa81afa 100644
no_signal, /* signal */
device_file_get_fd, /* get_fd */
diff --git a/server/directory.c b/server/directory.c
index b37ec969a9e..a6c0e292071 100644
index fd689c561bc..2894f7669db 100644
--- a/server/directory.c
+++ b/server/directory.c
@@ -69,6 +69,7 @@ static const struct object_ops object_type_ops =
@@ -268,7 +268,7 @@ index 6a63c0dd5e9..f95dc5a391f 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/event.c b/server/event.c
index f1b79b1b35e..c727bfdd1ba 100644
index ad7c09acc99..16cea16e9c2 100644
--- a/server/event.c
+++ b/server/event.c
@@ -72,6 +72,7 @@ static const struct object_ops event_ops =
@@ -288,7 +288,7 @@ index f1b79b1b35e..c727bfdd1ba 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/fd.c b/server/fd.c
index 16328063df6..4ce78db5b33 100644
index dde92beb664..b0c28e54360 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -172,6 +172,7 @@ static const struct object_ops fd_ops =
@@ -336,7 +336,7 @@ index 2a839968c25..cbef0c63383 100644
no_signal, /* signal */
file_get_fd, /* get_fd */
diff --git a/server/handle.c b/server/handle.c
index e65831b3b22..e6c5707556f 100644
index 8968df73647..3d36af360c2 100644
--- a/server/handle.c
+++ b/server/handle.c
@@ -126,6 +126,7 @@ static const struct object_ops handle_table_ops =
@@ -348,7 +348,7 @@ index e65831b3b22..e6c5707556f 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/hook.c b/server/hook.c
index c2d2823cd61..ab4d0e9dd31 100644
index ffe7206369e..921aa8aba2e 100644
--- a/server/hook.c
+++ b/server/hook.c
@@ -81,6 +81,7 @@ static const struct object_ops hook_table_ops =
@@ -360,7 +360,7 @@ index c2d2823cd61..ab4d0e9dd31 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/mailslot.c b/server/mailslot.c
index 61eceec94e2..92fe938d3b9 100644
index c54281c2101..e4c24459f22 100644
--- a/server/mailslot.c
+++ b/server/mailslot.c
@@ -81,6 +81,7 @@ static const struct object_ops mailslot_ops =
@@ -396,7 +396,7 @@ index 61eceec94e2..92fe938d3b9 100644
no_signal, /* signal */
mailslot_device_file_get_fd, /* get_fd */
diff --git a/server/mapping.c b/server/mapping.c
index 2bf45780375..b84bb08a77b 100644
index 247b28cf6f5..d8498b65054 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -67,6 +67,7 @@ static const struct object_ops ranges_ops =
@@ -436,7 +436,7 @@ index af0efe72132..4785a830e92 100644
mutex_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/named_pipe.c b/server/named_pipe.c
index dd8c14b30a9..5880b601d3a 100644
index 6e4ae371a1b..0eebd68abe6 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -119,6 +119,7 @@ static const struct object_ops named_pipe_ops =
@@ -480,7 +480,7 @@ index dd8c14b30a9..5880b601d3a 100644
no_signal, /* signal */
named_pipe_device_file_get_fd, /* get_fd */
diff --git a/server/object.c b/server/object.c
index b1665fb5372..0a4d1bede06 100644
index cd368ef724a..4d8fcc5a774 100644
--- a/server/object.c
+++ b/server/object.c
@@ -108,6 +108,7 @@ static const struct object_ops apc_reserve_ops =
@@ -500,7 +500,7 @@ index b1665fb5372..0a4d1bede06 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/object.h b/server/object.h
index 6222e3352ed..0a65d0e3892 100644
index 1058f9bfb0a..4acf6f03572 100644
--- a/server/object.h
+++ b/server/object.h
@@ -78,6 +78,8 @@ struct object_ops
@@ -513,7 +513,7 @@ index 6222e3352ed..0a65d0e3892 100644
void (*satisfied)(struct object *,struct wait_queue_entry *);
/* signal an object */
diff --git a/server/process.c b/server/process.c
index 49f5c75005f..dc83a089655 100644
index b161e3394ba..b3676936317 100644
--- a/server/process.c
+++ b/server/process.c
@@ -105,6 +105,7 @@ static const struct object_ops process_ops =
@@ -541,7 +541,7 @@ index 49f5c75005f..dc83a089655 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/queue.c b/server/queue.c
index 984d466b66e..8a95055db40 100644
index 2d23fb0def8..19486a745be 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -165,6 +165,7 @@ static const struct object_ops msg_queue_ops =
@@ -561,7 +561,7 @@ index 984d466b66e..8a95055db40 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/registry.c b/server/registry.c
index cc9a33fff1d..c19e92c9750 100644
index c60c737feff..34c422dcc6f 100644
--- a/server/registry.c
+++ b/server/registry.c
@@ -180,6 +180,7 @@ static const struct object_ops key_ops =
@@ -573,10 +573,10 @@ index cc9a33fff1d..c19e92c9750 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/request.c b/server/request.c
index dabcea68309..832a33917b4 100644
index 2254315b79e..f4f5e713935 100644
--- a/server/request.c
+++ b/server/request.c
@@ -90,6 +90,7 @@ static const struct object_ops master_socket_ops =
@@ -89,6 +89,7 @@ static const struct object_ops master_socket_ops =
no_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -621,10 +621,10 @@ index 19b76d44c16..55cd6aa037e 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/sock.c b/server/sock.c
index d2ec882554f..44a4e3b7b15 100644
index e064f867ff4..e9e81d9ecd0 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -471,6 +471,7 @@ static const struct object_ops sock_ops =
@@ -486,6 +486,7 @@ static const struct object_ops sock_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
default_fd_signaled, /* signaled */
@@ -632,7 +632,7 @@ index d2ec882554f..44a4e3b7b15 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
sock_get_fd, /* get_fd */
@@ -3599,6 +3600,7 @@ static const struct object_ops ifchange_ops =
@@ -3695,6 +3696,7 @@ static const struct object_ops ifchange_ops =
no_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -640,7 +640,7 @@ index d2ec882554f..44a4e3b7b15 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
ifchange_get_fd, /* get_fd */
@@ -3820,6 +3822,7 @@ static const struct object_ops socket_device_ops =
@@ -3916,6 +3918,7 @@ static const struct object_ops socket_device_ops =
no_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -649,7 +649,7 @@ index d2ec882554f..44a4e3b7b15 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/symlink.c b/server/symlink.c
index dd28efd3a75..c7f34412317 100644
index 74b60162c01..2dd9c6a798d 100644
--- a/server/symlink.c
+++ b/server/symlink.c
@@ -71,6 +71,7 @@ static const struct object_ops symlink_ops =
@@ -661,10 +661,10 @@ index dd28efd3a75..c7f34412317 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/thread.c b/server/thread.c
index 506adfc0a6f..339cdfec1fa 100644
index c7d1c6c55c8..ac000826599 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -96,6 +96,7 @@ static const struct object_ops thread_apc_ops =
@@ -106,6 +106,7 @@ static const struct object_ops thread_apc_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
thread_apc_signaled, /* signaled */
@@ -672,7 +672,7 @@ index 506adfc0a6f..339cdfec1fa 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
@@ -138,6 +139,7 @@ static const struct object_ops context_ops =
@@ -148,6 +149,7 @@ static const struct object_ops context_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
context_signaled, /* signaled */
@@ -680,7 +680,7 @@ index 506adfc0a6f..339cdfec1fa 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
@@ -187,6 +189,7 @@ static const struct object_ops thread_ops =
@@ -197,6 +199,7 @@ static const struct object_ops thread_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
thread_signaled, /* signaled */
@@ -689,7 +689,7 @@ index 506adfc0a6f..339cdfec1fa 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/timer.c b/server/timer.c
index 96dc9d00ca1..f59902d5607 100644
index b0b6ec81535..883f30fa97e 100644
--- a/server/timer.c
+++ b/server/timer.c
@@ -76,6 +76,7 @@ static const struct object_ops timer_ops =
@@ -701,7 +701,7 @@ index 96dc9d00ca1..f59902d5607 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/token.c b/server/token.c
index 48ee1eca8fe..479596bdbfa 100644
index 7e20c670a16..b638ed192cb 100644
--- a/server/token.c
+++ b/server/token.c
@@ -145,6 +145,7 @@ static const struct object_ops token_ops =
@@ -713,7 +713,7 @@ index 48ee1eca8fe..479596bdbfa 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/window.c b/server/window.c
index 412592fbc71..94a70ce890f 100644
index f7f9d5e517f..8c416d8c88f 100644
--- a/server/window.c
+++ b/server/window.c
@@ -107,6 +107,7 @@ static const struct object_ops window_ops =
@@ -725,7 +725,7 @@ index 412592fbc71..94a70ce890f 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/winstation.c b/server/winstation.c
index e5f4bfec357..50fe34aa9ce 100644
index b3746090ccf..126b70d625a 100644
--- a/server/winstation.c
+++ b/server/winstation.c
@@ -76,6 +76,7 @@ static const struct object_ops winstation_ops =
@@ -745,5 +745,5 @@ index e5f4bfec357..50fe34aa9ce 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
--
2.45.2
2.47.2

View File

@@ -1,5 +1,4 @@
Fixes: [36692] Many multi-threaded applications have poor performance due to heavy use of synchronization primitives
Depends: server-Realtime_Priority
Depends: ntdll-Junction_Points
Depends: server-PeekMessage
Depends: server-Signal_Thread

View File

@@ -0,0 +1,5 @@
Fixes: msxml3: Correct regression when looping element properties.
# PR https://gitlab.winehq.org/wine/wine/-/merge_requests/7529
#

View File

@@ -0,0 +1,69 @@
From f9e8c57e69b4edeefca2894fa2b48e07291dce80 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Wed, 5 Mar 2025 11:59:15 +1100
Subject: [PATCH] msxml3: IXMLDOMDocument3::preserveWhiteSpace fix for a non
VARIANT_BOOL value.
0024:trace:msxml:domdoc_put_preserveWhiteSpace (068F0520)->(1)
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=21940
---
dlls/msxml3/domdoc.c | 2 +-
dlls/msxml3/tests/domdoc.c | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/dlls/msxml3/domdoc.c b/dlls/msxml3/domdoc.c
index 8407f914c4f..e1e8e6c803f 100644
--- a/dlls/msxml3/domdoc.c
+++ b/dlls/msxml3/domdoc.c
@@ -2746,7 +2746,7 @@ static HRESULT WINAPI domdoc_put_preserveWhiteSpace(
{
domdoc *This = impl_from_IXMLDOMDocument3( iface );
TRACE("(%p)->(%d)\n", This, isPreserving);
- This->properties->preserving = isPreserving;
+ This->properties->preserving = isPreserving == VARIANT_TRUE ? VARIANT_TRUE : VARIANT_FALSE;
return S_OK;
}
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 76f0c827c2a..dcb83f781ba 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -4859,6 +4859,16 @@ static void test_whitespace(void)
check_ws_ignored(class_ptr->name, doc3, NULL);
check_ws_preserved(class_ptr->name, doc4, NULL);
+ hr = IXMLDOMDocument2_put_preserveWhiteSpace(doc4, 1);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc4, &b);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ ok(b == VARIANT_FALSE, "expected true\n");
+ check_ws_ignored(class_ptr->name, doc4, NULL);
+
+ hr = IXMLDOMDocument2_put_preserveWhiteSpace(doc4, VARIANT_TRUE);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
/* setting after loading xml affects trimming of leading/trailing ws only */
hr = IXMLDOMDocument2_put_preserveWhiteSpace(doc1, VARIANT_TRUE);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
@@ -4925,6 +4935,17 @@ static void test_whitespace(void)
IXMLDOMNodeList_Release(list);
IXMLDOMElement_Release(root);
+ hr = IXMLDOMDocument2_put_preserveWhiteSpace(doc1, VARIANT_TRUE);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc1, &b);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ ok(b == VARIANT_TRUE, "expected true %d\n", b);
+ hr = IXMLDOMDocument2_put_preserveWhiteSpace(doc1, 1);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ hr = IXMLDOMDocument2_get_preserveWhiteSpace(doc1, &b);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ ok(b == VARIANT_FALSE, "expected true %d\n", b);
+
IXMLDOMDocument2_Release(doc1);
free_bstrs();
--
2.47.2

View File

@@ -0,0 +1,8 @@
Fixes: [21940] msxml: Improve support for the whitespace value.
# PR https://gitlab.winehq.org/wine/wine/-/merge_requests/7494
#
# NOTES:
# Current tests fail when 1 is passed as a WhiteSpace value.

View File

@@ -1,4 +1,4 @@
From 33961353f1d7e0590c83927e632a6d43b2a81fa2 Mon Sep 17 00:00:00 2001
From a955d4d49edc6bbd44ee168f42cd1773f4868533 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Tue, 14 Jan 2020 21:39:23 +0300
Subject: [PATCH] ntdll: Increase step after failed map attempt in
@@ -9,10 +9,10 @@ Subject: [PATCH] ntdll: Increase step after failed map attempt in
1 file changed, 1 insertion(+)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index 75e6319c007..9ddd9a3a218 100644
index 4b952b765d7..6a24eb0fa8e 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -1306,6 +1306,7 @@ static void* try_map_free_area( void *base, void *end, ptrdiff_t step,
@@ -1382,6 +1382,7 @@ static void* try_map_free_area( void *base, void *end, ptrdiff_t step,
step == 0)
break;
start = (char *)start + step;
@@ -21,5 +21,5 @@ index 75e6319c007..9ddd9a3a218 100644
return NULL;
--
2.43.0
2.49.0

View File

@@ -1,4 +1,4 @@
From d853eba76fd849e21b5cb4ce0a3f113ba9beea87 Mon Sep 17 00:00:00 2001
From c86b01cc0809af60b05bcc8ce66a6001cd4b993b Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Thu, 23 Jul 2020 18:40:39 +0300
Subject: [PATCH] ntdll: Increase free ranges view block size on 64 bit.
@@ -8,10 +8,10 @@ Subject: [PATCH] ntdll: Increase free ranges view block size on 64 bit.
1 file changed, 4 insertions(+)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index 9ddd9a3a218..30d0df85fba 100644
index 6a24eb0fa8e..a36c919d47f 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -210,7 +210,11 @@ static BYTE *pages_vprot;
@@ -221,7 +221,11 @@ static BYTE *pages_vprot;
#endif
static struct file_view *view_block_start, *view_block_end, *next_free_view;
@@ -24,5 +24,5 @@ index 9ddd9a3a218..30d0df85fba 100644
static void *preload_reserve_end;
static BOOL force_exec_prot; /* whether to force PROT_EXEC on all PROT_READ mmaps */
--
2.43.0
2.49.0

View File

@@ -1,4 +1,4 @@
From 4c246e61f0de05a8b80e7a5d5ff2edcd21036fec Mon Sep 17 00:00:00 2001
From e5c4a6bd332d7d125e9db79fa29b14e55e3a1ee5 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Mon, 25 Nov 2019 12:19:20 +0300
Subject: [PATCH] ntdll: Force virtual memory allocation order.
@@ -12,14 +12,14 @@ are from higher memory than they expect.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48175
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46568
---
dlls/ntdll/unix/virtual.c | 410 +++++++++++++++-----------------------
1 file changed, 164 insertions(+), 246 deletions(-)
dlls/ntdll/unix/virtual.c | 402 +++++++++++++++-----------------------
1 file changed, 162 insertions(+), 240 deletions(-)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index 1a3d527f186..ec72d692c3a 100644
index a36c919d47f..2f682e70ec2 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -1269,43 +1269,15 @@ static struct file_view *find_view_range( const void *addr, size_t size )
@@ -1324,43 +1324,15 @@ static struct file_view *find_view_range( const void *addr, size_t size )
}
@@ -71,7 +71,7 @@ index 1a3d527f186..ec72d692c3a 100644
/***********************************************************************
* try_map_free_area
@@ -1338,112 +1310,6 @@ static void* try_map_free_area( void *base, void *end, ptrdiff_t step,
@@ -1393,112 +1365,6 @@ static void* try_map_free_area( void *base, void *end, ptrdiff_t step,
}
@@ -184,7 +184,7 @@ index 1a3d527f186..ec72d692c3a 100644
/***********************************************************************
* remove_reserved_area
*
@@ -1553,8 +1419,7 @@ static void free_view( struct file_view *view )
@@ -1613,8 +1479,7 @@ static void free_view( struct file_view *view )
*/
static void unregister_view( struct file_view *view )
{
@@ -194,7 +194,7 @@ index 1a3d527f186..ec72d692c3a 100644
wine_rb_remove( &views_tree, &view->entry );
}
@@ -1582,8 +1447,7 @@ static void delete_view( struct file_view *view ) /* [in] View */
@@ -1642,8 +1507,7 @@ static void delete_view( struct file_view *view ) /* [in] View */
static void register_view( struct file_view *view )
{
wine_rb_put( &views_tree, view->base, &view->entry );
@@ -204,7 +204,7 @@ index 1a3d527f186..ec72d692c3a 100644
}
@@ -1855,89 +1719,176 @@ static inline void *unmap_extra_space( void *ptr, size_t total_size, size_t want
@@ -1919,89 +1783,176 @@ static inline void *unmap_extra_space( void *ptr, size_t total_size, size_t want
return ptr;
}
@@ -362,8 +362,8 @@ index 1a3d527f186..ec72d692c3a 100644
-
- if (start >= limit_high) continue;
- if (end <= limit_low) return NULL;
- if (start < limit_low) start = limit_low;
- if (end > limit_high) end = limit_high;
- if (start < limit_low) start = (void *)ROUND_SIZE( 0, limit_low, host_page_mask );
- if (end > limit_high) end = ROUND_ADDR( limit_high, host_page_mask );
- ptr = find_reserved_free_area_outside_preloader( start, end, size, top_down, align_mask );
- if (ptr) break;
- }
@@ -396,8 +396,8 @@ index 1a3d527f186..ec72d692c3a 100644
+
+ TRACE("range %p-%p.\n", base, end);
+
+ if (base < limit_low) base = limit_low;
+ if (end > limit_high) end = limit_high;
+ if (base < limit_low) base = (void *)ROUND_SIZE( 0, limit_low, host_page_mask );
+ if (end > limit_high) end = ROUND_ADDR( limit_high, host_page_mask );
+ if (base > end || end - base < size) continue;
+
+ if (reserve_end >= base)
@@ -407,8 +407,8 @@ index 1a3d527f186..ec72d692c3a 100644
-
- if (start >= limit_high) return NULL;
- if (end <= limit_low) continue;
- if (start < limit_low) start = limit_low;
- if (end > limit_high) end = limit_high;
- if (start < limit_low) start = (void *)ROUND_SIZE( 0, limit_low, host_page_mask );
- if (end > limit_high) end = ROUND_ADDR( limit_high, host_page_mask );
- ptr = find_reserved_free_area_outside_preloader( start, end, size, top_down, align_mask );
- if (ptr) break;
+ if (reserve_end >= end)
@@ -442,31 +442,24 @@ index 1a3d527f186..ec72d692c3a 100644
}
/***********************************************************************
@@ -2041,48 +1992,13 @@ static NTSTATUS map_view( struct file_view **view_ret, void *base, size_t size,
}
else
{
- void *start = address_space_start;
- void *end = min( user_space_limit, host_addr_space_limit );
- size_t view_size, unmap_size;
@@ -2112,43 +2063,12 @@ static NTSTATUS map_view( struct file_view **view_ret, void *base, size_t size,
void *start = address_space_start;
void *end = min( user_space_limit, host_addr_space_limit );
size_t host_size = ROUND_SIZE( 0, size, host_page_mask );
- size_t unmap_size, view_size = host_size + align_mask + 1;
-
+ limit_high = limit_high ? min( limit_high + 1, (UINT_PTR)user_space_limit) : (UINT_PTR)user_space_limit;
+ if (limit_low < (ULONG_PTR)address_space_start) limit_low = (ULONG_PTR)address_space_start;
if (!align_mask) align_mask = granularity_mask;
- view_size = size + align_mask + 1;
-
- if (limit_low && (void *)limit_low > start) start = (void *)limit_low;
- if (limit_high && (void *)limit_high < end) end = (char *)limit_high + 1;
-
- if ((ptr = map_reserved_area( start, end, size, top_down, get_unix_prot(vprot), align_mask )))
if (limit_low && (void *)limit_low > start) start = (void *)limit_low;
if (limit_high && (void *)limit_high < end) end = (char *)limit_high + 1;
- if ((ptr = map_reserved_area( start, end, host_size, top_down, get_unix_prot(vprot), align_mask )))
- {
- TRACE( "got mem in reserved area %p-%p\n", ptr, (char *)ptr + size );
- goto done;
- }
-
- if (start > address_space_start || end < host_addr_space_limit || top_down)
- {
- if (!(ptr = map_free_area( start, end, size, top_down, get_unix_prot(vprot), align_mask )))
- if (!(ptr = map_free_area( start, end, host_size, top_down, get_unix_prot(vprot), align_mask )))
- return STATUS_NO_MEMORY;
- TRACE( "got mem with map_free_area %p-%p\n", ptr, (char *)ptr + size );
- goto done;
@@ -487,15 +480,15 @@ index 1a3d527f186..ec72d692c3a 100644
- unmap_size = unmap_area_above_user_limit( ptr, view_size );
- if (unmap_size) munmap( ptr, unmap_size );
- }
- ptr = unmap_extra_space( ptr, view_size, size, align_mask );
+ if (!(ptr = alloc_free_area( (void *)limit_low, (void *)limit_high, size, top_down, get_unix_prot( vprot ), align_mask )))
- ptr = unmap_extra_space( ptr, view_size, host_size, align_mask );
+ if (!(ptr = alloc_free_area( start, end, host_size, top_down, get_unix_prot( vprot ), align_mask )))
+ return STATUS_NO_MEMORY;
}
-done:
status = create_view( view_ret, ptr, size, vprot );
if (status != STATUS_SUCCESS) unmap_area( ptr, size );
return status;
@@ -3275,6 +3191,7 @@ static unsigned int virtual_map_section( HANDLE handle, PVOID *addr_ptr, ULONG_P
@@ -3413,6 +3333,7 @@ static unsigned int virtual_map_section( HANDLE handle, PVOID *addr_ptr, ULONG_P
done:
server_leave_uninterrupted_section( &virtual_mutex, &sigset );
if (needs_close) close( unix_handle );
@@ -503,7 +496,7 @@ index 1a3d527f186..ec72d692c3a 100644
return res;
}
@@ -6394,6 +6311,7 @@ NTSTATUS WINAPI NtWow64AllocateVirtualMemory64( HANDLE process, ULONG64 *ret, UL
@@ -6624,6 +6545,7 @@ NTSTATUS WINAPI NtWow64AllocateVirtualMemory64( HANDLE process, ULONG64 *ret, UL
*ret = (ULONG_PTR)base;
*size_ptr = size;
}
@@ -512,5 +505,5 @@ index 1a3d527f186..ec72d692c3a 100644
}
--
2.45.2
2.49.0

View File

@@ -1,17 +1,17 @@
From 844ba5e56a7231f65b65cabf06fe44ee49876aa0 Mon Sep 17 00:00:00 2001
From 09d76a4049ee4cc8bce4ffafc349da326fc058e0 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Fri, 1 Dec 2023 14:55:20 -0600
Subject: [PATCH] ntdll: Exclude natively mapped areas from free areas list.
---
dlls/ntdll/unix/virtual.c | 106 ++++++++++++++++++++++++++++++++++----
1 file changed, 97 insertions(+), 9 deletions(-)
dlls/ntdll/unix/virtual.c | 105 ++++++++++++++++++++++++++++++++++----
1 file changed, 96 insertions(+), 9 deletions(-)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index ec72d692c3a..30d43afc076 100644
index 2f682e70ec2..6170363f0a0 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -127,6 +127,7 @@ struct file_view
@@ -135,6 +135,7 @@ struct file_view
#define VPROT_SYSTEM 0x0200 /* system view (underlying mmap not under our control) */
#define VPROT_PLACEHOLDER 0x0400
#define VPROT_FREE_PLACEHOLDER 0x0800
@@ -19,7 +19,7 @@ index ec72d692c3a..30d43afc076 100644
/* Conversion from VPROT_* to Win32 flags */
static const BYTE VIRTUAL_Win32Flags[16] =
@@ -175,6 +176,8 @@ static void *working_set_limit = (void *)0x7fff0000;
@@ -191,6 +192,8 @@ static void *working_set_limit = (void *)0x7fff0000;
static void *host_addr_space_limit; /* top of the host virtual address space */
static struct file_view *arm64ec_view;
@@ -28,7 +28,7 @@ index ec72d692c3a..30d43afc076 100644
ULONG_PTR user_space_wow_limit = 0;
struct _KUSER_SHARED_DATA *user_shared_data = (void *)0x7ffe0000;
@@ -1157,7 +1160,9 @@ static void dump_view( struct file_view *view )
@@ -1212,7 +1215,9 @@ static void dump_view( struct file_view *view )
BYTE prot = get_page_vprot( addr );
TRACE( "View: %p - %p", addr, addr + view->size - 1 );
@@ -39,7 +39,7 @@ index ec72d692c3a..30d43afc076 100644
TRACE( " (builtin image)\n" );
else if (view->protect & VPROT_FREE_PLACEHOLDER)
TRACE( " (placeholder)\n" );
@@ -1277,6 +1282,8 @@ struct alloc_area
@@ -1332,6 +1337,8 @@ struct alloc_area
int unix_prot;
BOOL top_down;
UINT_PTR align_mask;
@@ -48,7 +48,7 @@ index ec72d692c3a..30d43afc076 100644
};
/***********************************************************************
@@ -1285,9 +1292,14 @@ struct alloc_area
@@ -1340,9 +1347,13 @@ struct alloc_area
* Try mmaping some expected free memory region, eventually stepping and
* retrying inside it, and return where it actually succeeded, or NULL.
*/
@@ -60,12 +60,11 @@ index ec72d692c3a..30d43afc076 100644
+ size_t abs_step = step > 0 ? step : -step;
+ size_t size = area->size;
+ int unix_prot = area->unix_prot;
+ void *ptr;
+
while (start && base <= start && (char*)start + size <= (char*)end)
{
if (anon_mmap_tryfixed( start, size, unix_prot, 0 ) != MAP_FAILED) return start;
@@ -1298,12 +1310,19 @@ static void* try_map_free_area( void *base, void *end, ptrdiff_t step,
@@ -1353,12 +1364,19 @@ static void* try_map_free_area( void *base, void *end, ptrdiff_t step,
strerror(errno), start, (char *)start + size, unix_prot );
return NULL;
}
@@ -86,7 +85,7 @@ index ec72d692c3a..30d43afc076 100644
}
return NULL;
@@ -1727,11 +1746,11 @@ static void *try_map_free_area_range( struct alloc_area *area, char *start, char
@@ -1791,11 +1809,11 @@ static void *try_map_free_area_range( struct alloc_area *area, char *start, char
{
if (end - start < area->size) return NULL;
alloc_start = ROUND_ADDR( end - area->size, area->align_mask );
@@ -100,7 +99,7 @@ index ec72d692c3a..30d43afc076 100644
}
static void *alloc_free_area_in_range( struct alloc_area *area, char *base, char *end )
@@ -1821,9 +1840,10 @@ static void *alloc_free_area( char *limit_low, char *limit_high, size_t size, BO
@@ -1885,9 +1903,10 @@ static void *alloc_free_area( char *limit_low, char *limit_high, size_t size, BO
struct range_entry *range, *ranges_start, *ranges_end;
char *reserve_start, *reserve_end;
struct alloc_area area;
@@ -112,7 +111,7 @@ index ec72d692c3a..30d43afc076 100644
TRACE("limit %p-%p, size %p, top_down %#x.\n", limit_low, limit_high, (void *)size, top_down);
@@ -1888,6 +1908,50 @@ static void *alloc_free_area( char *limit_low, char *limit_high, size_t size, BO
@@ -1952,6 +1971,50 @@ static void *alloc_free_area( char *limit_low, char *limit_high, size_t size, BO
if ((result = alloc_free_area_in_range( &area, base, end )))
break;
}
@@ -163,7 +162,7 @@ index ec72d692c3a..30d43afc076 100644
return result;
}
@@ -1947,6 +2011,17 @@ failed:
@@ -2012,6 +2075,17 @@ failed:
return status;
}
@@ -181,10 +180,10 @@ index ec72d692c3a..30d43afc076 100644
/***********************************************************************
* map_view
*
@@ -1997,7 +2072,15 @@ static NTSTATUS map_view( struct file_view **view_ret, void *base, size_t size,
if (!align_mask) align_mask = granularity_mask;
@@ -2067,7 +2141,15 @@ static NTSTATUS map_view( struct file_view **view_ret, void *base, size_t size,
if (limit_high && (void *)limit_high < end) end = (char *)limit_high + 1;
if (!(ptr = alloc_free_area( (void *)limit_low, (void *)limit_high, size, top_down, get_unix_prot( vprot ), align_mask )))
if (!(ptr = alloc_free_area( start, end, host_size, top_down, get_unix_prot( vprot ), align_mask )))
- return STATUS_NO_MEMORY;
+ {
+ WARN("Allocation failed, clearing native views.\n");
@@ -198,7 +197,7 @@ index ec72d692c3a..30d43afc076 100644
}
status = create_view( view_ret, ptr, size, vprot );
if (status != STATUS_SUCCESS) unmap_area( ptr, size );
@@ -4346,7 +4429,12 @@ void virtual_set_force_exec( BOOL enable )
@@ -4503,7 +4585,12 @@ void virtual_set_force_exec( BOOL enable )
WINE_RB_FOR_EACH_ENTRY( view, &views_tree, struct file_view, entry )
{
/* file mappings are always accessible */
@@ -213,5 +212,5 @@ index ec72d692c3a..30d43afc076 100644
mprotect_range( view->base, view->size, commit, 0 );
}
--
2.45.2
2.49.0

View File

@@ -1,4 +1,4 @@
From 15c10643fa18d1159af85df3132ae3c2228d4488 Mon Sep 17 00:00:00 2001
From ca8481ab78a89e7433f25c340b7e3965d9f3e092 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 30 May 2015 02:23:15 +0200
Subject: [PATCH] ntdll: Add support for hiding wine version information from
@@ -10,7 +10,7 @@ Subject: [PATCH] ntdll: Add support for hiding wine version information from
2 files changed, 103 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index a292ba30774..60c72ffbb89 100644
index d263a6a786d..04dd4c106e3 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -88,6 +88,9 @@ const WCHAR system_dir[] = L"C:\\windows\\system32\\";
@@ -32,7 +32,7 @@ index a292ba30774..60c72ffbb89 100644
struct ldr_notification
{
struct list entry;
@@ -2012,6 +2017,96 @@ NTSTATUS WINAPI LdrUnlockLoaderLock( ULONG flags, ULONG_PTR magic )
@@ -2049,6 +2054,96 @@ NTSTATUS WINAPI LdrUnlockLoaderLock( ULONG flags, ULONG_PTR magic )
}
@@ -129,16 +129,16 @@ index a292ba30774..60c72ffbb89 100644
/******************************************************************
* LdrGetProcedureAddress (NTDLL.@)
*/
@@ -2032,7 +2127,7 @@ NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE module, const ANSI_STRING *name,
@@ -2069,7 +2164,7 @@ NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE module, const ANSI_STRING *name,
{
void *proc = name ? find_named_export( module, exports, exp_size, name->Buffer, -1, NULL, NULL )
: find_ordinal_export( module, exports, exp_size, ord - exports->Base, NULL, NULL );
void *proc = name ? find_named_export( module, exports, exp_size, name->Buffer, -1, NULL, wm, TRUE )
: find_ordinal_export( module, exports, exp_size, ord - exports->Base, NULL, wm, TRUE );
- if (proc)
+ if (proc && !is_hidden_export( proc ))
{
*address = proc;
ret = STATUS_SUCCESS;
@@ -2294,6 +2389,8 @@ static void build_ntdll_module(void)
@@ -2340,6 +2435,8 @@ static void build_ntdll_module(void)
wm->ldr.Flags &= ~LDR_DONT_RESOLVE_REFS;
node_ntdll = wm->ldr.DdagNode;
if (TRACE_ON(relay)) RELAY_SetupDLL( module );

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