From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/dwrite/font.c | 20 ++++++++++---------- dlls/dwrite/tests/font.c | 7 ------- 2 files changed, 10 insertions(+), 17 deletions(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c index ffe2981432e..b0f72010e31 100644 --- a/dlls/dwrite/font.c +++ b/dlls/dwrite/font.c @@ -5750,12 +5750,21 @@ IDWriteFontFileLoader *get_local_fontfile_loader(void)
HRESULT get_local_refkey(const WCHAR *path, const FILETIME *writetime, void **key, UINT32 *size) { + WIN32_FILE_ATTRIBUTE_DATA info; struct local_refkey *refkey; size_t len;
if (!path) return E_INVALIDARG;
+ if (!writetime) + { + if (!GetFileAttributesExW(path, GetFileExInfoStandard, &info)) + return DWRITE_E_FILENOTFOUND; + + writetime = &info.ftLastWriteTime; + } + len = wcslen(path) + 1;
*size = FIELD_OFFSET(struct local_refkey, name) + len * sizeof(WCHAR); @@ -5764,16 +5773,7 @@ HRESULT get_local_refkey(const WCHAR *path, const FILETIME *writetime, void **ke if (!(refkey = malloc(*size))) return E_OUTOFMEMORY;
- if (writetime) - refkey->writetime = *writetime; - else { - WIN32_FILE_ATTRIBUTE_DATA info; - - if (GetFileAttributesExW(path, GetFileExInfoStandard, &info)) - refkey->writetime = info.ftLastWriteTime; - else - memset(&refkey->writetime, 0, sizeof(refkey->writetime)); - } + refkey->writetime = *writetime; memcpy(refkey->name, path, len * sizeof(WCHAR)); wcsupr(refkey->name);
diff --git a/dlls/dwrite/tests/font.c b/dlls/dwrite/tests/font.c index faffd32a7ae..3a670558fb2 100644 --- a/dlls/dwrite/tests/font.c +++ b/dlls/dwrite/tests/font.c @@ -3498,12 +3498,8 @@ static void test_CreateFontFileReference(void) /* File does not have to exist, if timestamp is provided. */ file = (void *)0xdeadbeef; hr = IDWriteFactory_CreateFontFileReference(factory, L"[hello].ttf", NULL, &file); - todo_wine ok(hr == DWRITE_E_FILENOTFOUND, "Unexpected hr %#lx.\n",hr); - todo_wine ok(!file, "Unexpected pointer %p.\n", file); - if (hr == S_OK) - IDWriteFontFile_Release(file);
memset(×tamp, 0xab, sizeof(timestamp)); hr = IDWriteFactory_CreateFontFileReference(factory, L"[hello].ttf", ×tamp, &file); @@ -8196,10 +8192,7 @@ static void test_CreateFontFaceReference(void)
/* path however has to be valid */ hr = IDWriteFactory3_CreateFontFaceReference(factory, L"dummy", NULL, 0, DWRITE_FONT_SIMULATIONS_NONE, &ref); - todo_wine ok(hr == DWRITE_E_FILENOTFOUND, "Unexpected hr %#lx.\n", hr); - if (hr == S_OK) - IDWriteFontFaceReference_Release(ref);
EXPECT_REF(factory, 1); hr = IDWriteFactory3_CreateFontFaceReference(factory, path, NULL, 0, DWRITE_FONT_SIMULATIONS_NONE, &ref);