[v2 PATCH] dwrite/layout: Handle NULL format in CreateEllipsisTrimmingSign().

Nikolay Sivov nsivov at codeweavers.com
Mon Jan 18 06:38:40 CST 2021


From: Haoyang Chen <chenhaoyang at uniontech.com>

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---

v2: added a test

 dlls/dwrite/layout.c       | 3 +++
 dlls/dwrite/tests/layout.c | 5 +++++
 2 files changed, 8 insertions(+)

diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index 79d5ad50c6d..0b5bad80339 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -5364,6 +5364,9 @@ HRESULT create_trimmingsign(IDWriteFactory7 *factory, IDWriteTextFormat *format,
 
     *sign = NULL;
 
+    if (!format)
+        return E_INVALIDARG;
+
     /* Validate reading/flow direction here, layout creation won't complain about
        invalid combinations. */
     reading = IDWriteTextFormat_GetReadingDirection(format);
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index 328403ea9ba..52f17820e5e 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -1354,6 +1354,11 @@ static void test_CreateEllipsisTrimmingSign(void)
             DWRITE_FONT_STRETCH_NORMAL, 10.0f, L"en-GB", &format);
     ok(hr == S_OK, "Failed to create text format, hr %#x.\n", hr);
 
+    sign = (void *)0xdeadbeef;
+    hr = IDWriteFactory_CreateEllipsisTrimmingSign(factory, NULL, &sign);
+    ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
+    ok(!sign, "Unexpected pointer %p.\n", sign);
+
     EXPECT_REF(format, 1);
     hr = IDWriteFactory_CreateEllipsisTrimmingSign(factory, format, &sign);
     ok(hr == S_OK, "got 0x%08x\n", hr);
-- 
2.29.2




More information about the wine-devel mailing list