Nikolay Sivov : dwrite: Fix stretch value validation in CreateTextFormat().
Alexandre Julliard
julliard at winehq.org
Wed Aug 3 15:31:40 CDT 2022
Module: wine
Branch: master
Commit: 2dd903885becd74264393007a5e8c4e47c52c5e8
URL: https://gitlab.winehq.org/wine/wine/-/commit/2dd903885becd74264393007a5e8c4e47c52c5e8
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Wed Aug 3 13:41:35 2022 +0300
dwrite: Fix stretch value validation in CreateTextFormat().
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/dwrite/format.c | 11 +++++++----
dlls/dwrite/tests/layout.c | 4 ++++
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/dlls/dwrite/format.c b/dlls/dwrite/format.c
index dd120fe032e..01a6dfd06c9 100644
--- a/dlls/dwrite/format.c
+++ b/dlls/dwrite/format.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2012, 2014-2021 Nikolay Sivov for CodeWeavers
+ * Copyright 2012, 2014-2022 Nikolay Sivov for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -723,10 +723,13 @@ HRESULT create_text_format(const WCHAR *family_name, IDWriteFontCollection *coll
if (size <= 0.0f)
return E_INVALIDARG;
- if (((UINT32)weight > DWRITE_FONT_WEIGHT_ULTRA_BLACK) ||
- ((UINT32)stretch > DWRITE_FONT_STRETCH_ULTRA_EXPANDED) ||
- ((UINT32)style > DWRITE_FONT_STYLE_ITALIC))
+ if ((UINT32)weight > DWRITE_FONT_WEIGHT_ULTRA_BLACK
+ || stretch == DWRITE_FONT_STRETCH_UNDEFINED
+ || (UINT32)stretch > DWRITE_FONT_STRETCH_ULTRA_EXPANDED
+ || (UINT32)style > DWRITE_FONT_STYLE_ITALIC)
+ {
return E_INVALIDARG;
+ }
if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index 5e7e1b16d27..3b2289b40ce 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -1196,6 +1196,10 @@ static void test_CreateTextFormat(void)
10, 10.0f, L"en-us", &format);
ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+ hr = IDWriteFactory_CreateTextFormat(factory, L"Tahoma", NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_ITALIC,
+ DWRITE_FONT_STRETCH_UNDEFINED, 10.0f, L"en-us", &format);
+ ok(hr == E_INVALIDARG, "Unexpected hr %#lx.\n", hr);
+
/* empty family name */
hr = IDWriteFactory_CreateTextFormat(factory, L"", NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL,
DWRITE_FONT_STRETCH_NORMAL, 10.0f, L"en-us", &format);
More information about the wine-cvs
mailing list