Rebase against e1b8e7f6ec755afd251a3b7af0e632c6e4d74a64.

This commit is contained in:
Alistair Leslie-Hughes
2025-02-23 08:27:19 +11:00
parent 857466ad4c
commit ec5fbb99b7
5 changed files with 70 additions and 89 deletions

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 );

View File

@@ -1,121 +1,100 @@
From 5dbd2569a120af6eea544a4738b071ee8e63e8c6 Mon Sep 17 00:00:00 2001
From dd305e7b072569a178f3736e8185c28986cb1a4a Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 26 Apr 2016 12:11:17 +0800
Subject: [PATCH] oleaut32/tests: Add some tests for loading and saving EMF
using IPicture interface.
---
dlls/oleaut32/tests/olepicture.c | 90 ++++++++++++++++++++++++++++++++
1 file changed, 90 insertions(+)
dlls/oleaut32/tests/olepicture.c | 45 +++++++++++++++++++-------------
1 file changed, 27 insertions(+), 18 deletions(-)
diff --git a/dlls/oleaut32/tests/olepicture.c b/dlls/oleaut32/tests/olepicture.c
index f0468a6f83c..f06befd2976 100644
index 58d5577631c..025f7c84873 100644
--- a/dlls/oleaut32/tests/olepicture.c
+++ b/dlls/oleaut32/tests/olepicture.c
@@ -1613,6 +1613,95 @@ static void test_load_save_dib(void)
}
}
+static void test_load_save_emf(void)
+{
+ HDC hdc;
+ IPicture *pic;
+ PICTDESC desc;
+ short type;
+ OLE_HANDLE handle;
+ HGLOBAL hmem;
+ DWORD *mem;
+ ENHMETAHEADER *emh;
+ IPersistStream *src_stream;
+ IStream *dst_stream;
+ LARGE_INTEGER offset;
+ HRESULT hr;
+ LONG size;
+
+ hdc = CreateEnhMetaFileA(0, NULL, NULL, NULL);
+ ok(hdc != 0, "CreateEnhMetaFileA failed\n");
+
+ desc.cbSizeofstruct = sizeof(desc);
+ desc.picType = PICTYPE_ENHMETAFILE;
+ desc.emf.hemf = CloseEnhMetaFile(hdc);
+ ok(desc.emf.hemf != 0, "CloseEnhMetaFile failed\n");
+ hr = OleCreatePictureIndirect(&desc, &IID_IPicture, FALSE, (void**)&pic);
@@ -1634,55 +1634,64 @@ static void test_load_save_emf(void)
desc.emf.hemf = CloseEnhMetaFile(hdc);
ok(desc.emf.hemf != 0, "CloseEnhMetaFile failed\n");
hr = OleCreatePictureIndirect(&desc, &IID_IPicture, FALSE, (void**)&pic);
- ok(hr == S_OK, "OleCreatePictureIndirect error %#lx\n", hr);
+ ok(hr == S_OK, "OleCreatePictureIndirect error %#x\n", hr);
+
+ type = -1;
+ hr = IPicture_get_Type(pic, &type);
type = -1;
hr = IPicture_get_Type(pic, &type);
- ok(hr == S_OK, "get_Type error %#lx\n", hr);
+ ok(hr == S_OK,"get_Type error %#8x\n", hr);
+ ok(type == PICTYPE_ENHMETAFILE,"expected PICTYPE_ENHMETAFILE, got %d\n", type);
+
+ hr = IPicture_get_Handle(pic, &handle);
ok(type == PICTYPE_ENHMETAFILE,"expected PICTYPE_ENHMETAFILE, got %d\n", type);
hr = IPicture_get_Handle(pic, &handle);
- ok(hr == S_OK,"get_Handle error %#lx\n", hr);
+ ok(hr == S_OK,"get_Handle error %#8x\n", hr);
+ ok(IntToPtr(handle) == desc.emf.hemf, "get_Handle returned wrong handle %#x\n", handle);
+
+ hmem = GlobalAlloc(GMEM_MOVEABLE, 0);
+ hr = CreateStreamOnHGlobal(hmem, FALSE, &dst_stream);
ok(IntToPtr(handle) == desc.emf.hemf, "get_Handle returned wrong handle %#x\n", handle);
hmem = GlobalAlloc(GMEM_MOVEABLE, 0);
hr = CreateStreamOnHGlobal(hmem, FALSE, &dst_stream);
- ok(hr == S_OK, "createstreamonhglobal error %#lx\n", hr);
+ ok(hr == S_OK, "createstreamonhglobal error %#x\n", hr);
+
+ size = -1;
+ hr = IPicture_SaveAsFile(pic, dst_stream, TRUE, &size);
size = -1;
hr = IPicture_SaveAsFile(pic, dst_stream, TRUE, &size);
- ok(hr == S_OK, "IPicture_SaveasFile error %#lx\n", hr);
- ok(size == 128, "expected 128, got %ld\n", size);
+ ok(hr == S_OK, "IPicture_SaveasFile error %#x\n", hr);
+todo_wine
+ ok(size == 128, "expected 128, got %d\n", size);
+ emh = GlobalLock(hmem);
emh = GlobalLock(hmem);
- ok(emh->iType == EMR_HEADER, "wrong iType %04lx\n", emh->iType);
- ok(emh->dSignature == ENHMETA_SIGNATURE, "wrong dSignature %08lx\n", emh->dSignature);
+if (size)
+{
+ ok(emh->iType == EMR_HEADER, "wrong iType %04x\n", emh->iType);
+ ok(emh->dSignature == ENHMETA_SIGNATURE, "wrong dSignature %08x\n", emh->dSignature);
+}
+ GlobalUnlock(hmem);
+
+ size = -1;
+ hr = IPicture_SaveAsFile(pic, dst_stream, FALSE, &size);
GlobalUnlock(hmem);
size = -1;
hr = IPicture_SaveAsFile(pic, dst_stream, FALSE, &size);
- ok(hr == E_FAIL, "expected E_FAIL, got %#lx\n", hr);
- ok(size == -1, "expected -1, got %ld\n", size);
+todo_wine
+ ok(hr == E_FAIL, "expected E_FAIL, got %#x\n", hr);
+todo_wine
+ ok(size == -1, "expected -1, got %d\n", size);
+
+ offset.QuadPart = 0;
+ hr = IStream_Seek(dst_stream, offset, SEEK_SET, NULL);
offset.QuadPart = 0;
hr = IStream_Seek(dst_stream, offset, SEEK_SET, NULL);
- ok(hr == S_OK, "IStream_Seek %#lx\n", hr);
+ ok(hr == S_OK, "IStream_Seek %#x\n", hr);
+
+ hr = IPicture_QueryInterface(pic, &IID_IPersistStream, (void **)&src_stream);
hr = IPicture_QueryInterface(pic, &IID_IPersistStream, (void **)&src_stream);
- ok(hr == S_OK, "QueryInterface error %#lx\n", hr);
+ ok(hr == S_OK, "QueryInterface error %#x\n", hr);
+
+ hr = IPersistStream_Save(src_stream, dst_stream, TRUE);
hr = IPersistStream_Save(src_stream, dst_stream, TRUE);
- ok(hr == S_OK, "Save error %#lx\n", hr);
+todo_wine
+ ok(hr == S_OK, "Save error %#x\n", hr);
+
+ IPersistStream_Release(src_stream);
+ IStream_Release(dst_stream);
+
+ mem = GlobalLock(hmem);
IPersistStream_Release(src_stream);
IStream_Release(dst_stream);
mem = GlobalLock(hmem);
- ok(!memcmp(mem, "lt\0\0", 4), "got wrong stream header %04lx\n", mem[0]);
- ok(mem[1] == 128, "expected 128, got %lu\n", mem[1]);
+if (hr == S_OK)
+{
+ ok(!memcmp(mem, "lt\0\0", 4), "got wrong stream header %04x\n", mem[0]);
+ ok(mem[1] == 128, "expected 128, got %u\n", mem[1]);
+ emh = (ENHMETAHEADER *)(mem + 2);
emh = (ENHMETAHEADER *)(mem + 2);
- ok(emh->iType == EMR_HEADER, "wrong iType %04lx\n", emh->iType);
- ok(emh->dSignature == ENHMETA_SIGNATURE, "wrong dSignature %08lx\n", emh->dSignature);
-
+ ok(emh->iType == EMR_HEADER, "wrong iType %04x\n", emh->iType);
+ ok(emh->dSignature == ENHMETA_SIGNATURE, "wrong dSignature %08x\n", emh->dSignature);
+}
+ GlobalUnlock(hmem);
+ GlobalFree(hmem);
+
+ DeleteEnhMetaFile(desc.emf.hemf);
+ IPicture_Release(pic);
+}
+
START_TEST(olepicture)
{
hOleaut32 = GetModuleHandleA("oleaut32.dll");
@@ -1653,6 +1742,7 @@ START_TEST(olepicture)
test_load_save_dib();
test_load_save_icon();
test_load_save_empty_picture();
+ test_load_save_emf();
}
GlobalUnlock(hmem);
GlobalFree(hmem);
--
2.43.0
2.47.2

View File

@@ -1 +1,2 @@
Fixes: [40523] Implement support for loading and saving EMF to IPicture interface
Disabled: True

View File

@@ -1,2 +1,3 @@
Fixes: [8532] Implement a better stub for IPicture::SaveAsFile
Depends: oleaut32-Load_Save_EMF
Disabled: True

View File

@@ -1 +1 @@
41abefccebf2729a70be9ec7bdb1c6226a56e369
e1b8e7f6ec755afd251a3b7af0e632c6e4d74a64