From 08f578a6c5e415a7f937d42f93a5e245907934a0 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Sun, 21 Aug 2011 17:53:12 +0400 Subject: [PATCH] oleaut32: FONTDESC size field value is not important for OleCreateFontIndirect. --- dlls/oleaut32/olefont.c | 5 ----- dlls/oleaut32/tests/olefont.c | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/dlls/oleaut32/olefont.c b/dlls/oleaut32/olefont.c index fa60da61630..222e20d740d 100644 --- a/dlls/oleaut32/olefont.c +++ b/dlls/oleaut32/olefont.c @@ -2245,11 +2245,6 @@ static OLEFontImpl* OLEFontImpl_Construct(const FONTDESC *fontDesc) newObject->ref = 1; - /* - * Copy the description of the font in the object. - */ - assert(fontDesc->cbSizeofstruct >= sizeof(FONTDESC)); - newObject->description.cbSizeofstruct = sizeof(FONTDESC); newObject->description.lpstrName = HeapAlloc(GetProcessHeap(), 0, diff --git a/dlls/oleaut32/tests/olefont.c b/dlls/oleaut32/tests/olefont.c index 65589b380bc..6fc152006b3 100644 --- a/dlls/oleaut32/tests/olefont.c +++ b/dlls/oleaut32/tests/olefont.c @@ -1104,6 +1104,42 @@ static void test_realization(void) IFont_Release(font); } +static void test_OleCreateFontIndirect(void) +{ + FONTDESC fontdesc; + IFont *font; + HRESULT hr; + + fontdesc.cbSizeofstruct = sizeof(fontdesc); + fontdesc.lpstrName = arial_font; + fontdesc.cySize.int64 = 12 * 10000; /* 12 pt */ + fontdesc.sWeight = FW_NORMAL; + fontdesc.sCharset = ANSI_CHARSET; + fontdesc.fItalic = FALSE; + fontdesc.fUnderline = FALSE; + fontdesc.fStrikethrough = FALSE; + + hr = pOleCreateFontIndirect(&fontdesc, &IID_IFont, (void**)&font); + EXPECT_HR(hr, S_OK); + IFont_Release(font); + + /* play with cbSizeofstruct value */ + fontdesc.cbSizeofstruct = sizeof(fontdesc)-1; + hr = pOleCreateFontIndirect(&fontdesc, &IID_IFont, (void**)&font); + EXPECT_HR(hr, S_OK); + IFont_Release(font); + + fontdesc.cbSizeofstruct = sizeof(fontdesc)+1; + hr = pOleCreateFontIndirect(&fontdesc, &IID_IFont, (void**)&font); + EXPECT_HR(hr, S_OK); + IFont_Release(font); + + fontdesc.cbSizeofstruct = 0; + hr = pOleCreateFontIndirect(&fontdesc, &IID_IFont, (void**)&font); + EXPECT_HR(hr, S_OK); + IFont_Release(font); +} + START_TEST(olefont) { hOleaut32 = GetModuleHandleA("oleaut32.dll"); @@ -1126,4 +1162,5 @@ START_TEST(olefont) test_returns(); test_hfont_lifetime(); test_realization(); + test_OleCreateFontIndirect(); } -- 2.11.4.GIT