mirror of
git://source.winehq.org/git/wine.git
synced 2024-11-01 07:37:02 +00:00
gdiplus: Use FILE_SHARE_READ in GdipPrivateAddFontFile().
ZusiDisplay sometimes loads the same font file into two different PrivateFontCollections using two threads, so there is a race condition when the file is opened without the FILE_SHARE_READ sharing mode. The second call to GdipPrivateAddFontFile() might fail if the first one hasn't closed the file handle yet.
This commit is contained in:
parent
0ebf3222e5
commit
b3bf30e7e2
2 changed files with 2 additions and 2 deletions
|
@ -1110,7 +1110,7 @@ GpStatus WINGDIPAPI GdipPrivateAddFontFile(GpFontCollection *collection, GDIPCON
|
|||
|
||||
if (!collection || !name) return InvalidParameter;
|
||||
|
||||
file = CreateFileW(name, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
|
||||
file = CreateFileW(name, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
|
||||
if (file == INVALID_HANDLE_VALUE) return InvalidParameter;
|
||||
|
||||
if (!GetFileSizeEx(file, &size) || size.u.HighPart)
|
||||
|
|
|
@ -91,7 +91,7 @@ static void test_long_name(void)
|
|||
ok(file != INVALID_HANDLE_VALUE, "CreateFileW failed: %ld\n", GetLastError());
|
||||
|
||||
stat = GdipPrivateAddFontFile(fonts, path);
|
||||
todo_wine ok(stat == Ok, "GdipPrivateAddFontFile failed with open file handle: %d\n", stat);
|
||||
ok(stat == Ok, "GdipPrivateAddFontFile failed with open file handle: %d\n", stat);
|
||||
|
||||
CloseHandle(file);
|
||||
|
||||
|
|
Loading…
Reference in a new issue