Nikolay Sivov : dwrite: Use array allocation helper for in-memory loader.
Alexandre Julliard
julliard at winehq.org
Tue May 14 15:43:02 CDT 2019
Module: wine
Branch: master
Commit: 3cfd0a7a4b29cb081508705731eb01e90cd77517
URL: https://source.winehq.org/git/wine.git/?a=commit;h=3cfd0a7a4b29cb081508705731eb01e90cd77517
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Tue May 14 13:27:25 2019 +0300
dwrite: Use array allocation helper for in-memory loader.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/dwrite/font.c | 36 +++++++++++-------------------------
1 file changed, 11 insertions(+), 25 deletions(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index de7ccef..5f4abc7 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -4588,8 +4588,8 @@ struct dwrite_inmemory_fileloader
LONG ref;
struct dwrite_inmemory_stream_data **streams;
- UINT32 filecount;
- UINT32 capacity;
+ size_t size;
+ size_t count;
};
static inline struct dwrite_localfontfileloader *impl_from_IDWriteLocalFontFileLoader(IDWriteLocalFontFileLoader *iface)
@@ -6208,13 +6208,12 @@ static ULONG WINAPI inmemoryfontfileloader_Release(IDWriteInMemoryFontFileLoader
{
struct dwrite_inmemory_fileloader *loader = impl_from_IDWriteInMemoryFontFileLoader(iface);
ULONG ref = InterlockedDecrement(&loader->ref);
+ size_t i;
TRACE("(%p)->(%u)\n", loader, ref);
if (!ref) {
- UINT32 i;
-
- for (i = 0; i < loader->filecount; i++)
+ for (i = 0; i < loader->count; ++i)
release_inmemory_stream(loader->streams[i]);
heap_free(loader->streams);
heap_free(loader);
@@ -6239,7 +6238,7 @@ static HRESULT WINAPI inmemoryfontfileloader_CreateStreamFromKey(IDWriteInMemory
index = *(DWORD *)key;
- if (index >= loader->filecount)
+ if (index >= loader->count)
return E_INVALIDARG;
if (!(stream = heap_alloc(sizeof(*stream))))
@@ -6266,21 +6265,8 @@ static HRESULT WINAPI inmemoryfontfileloader_CreateInMemoryFontFileReference(IDW
*fontfile = NULL;
- if (loader->filecount == loader->capacity) {
- if (loader->streams) {
- struct dwrite_inmemory_stream_data **ptr;
-
- if (!(ptr = heap_realloc(loader->streams, 2 * loader->capacity * sizeof(*loader->streams))))
- return E_OUTOFMEMORY;
-
- loader->streams = ptr;
- loader->capacity *= 2;
- }
- else {
- loader->capacity = 16;
- loader->streams = heap_calloc(loader->capacity, sizeof(*loader->streams));
- }
- }
+ if (!dwrite_array_reserve((void **)&loader->streams, &loader->size, loader->count + 1, sizeof(*loader->streams)))
+ return E_OUTOFMEMORY;
if (!(stream = heap_alloc(sizeof(*stream))))
return E_OUTOFMEMORY;
@@ -6300,8 +6286,8 @@ static HRESULT WINAPI inmemoryfontfileloader_CreateInMemoryFontFileReference(IDW
memcpy(stream->data, data, data_size);
}
- key = loader->filecount;
- loader->streams[loader->filecount++] = stream;
+ key = loader->count;
+ loader->streams[loader->count++] = stream;
return IDWriteFactory_CreateCustomFontFileReference(factory, &key, sizeof(key),
(IDWriteFontFileLoader *)&loader->IDWriteInMemoryFontFileLoader_iface, fontfile);
@@ -6311,9 +6297,9 @@ static UINT32 WINAPI inmemoryfontfileloader_GetFileCount(IDWriteInMemoryFontFile
{
struct dwrite_inmemory_fileloader *loader = impl_from_IDWriteInMemoryFontFileLoader(iface);
- TRACE("(%p)\n", loader);
+ TRACE("%p.\n", iface);
- return loader->filecount;
+ return loader->count;
}
static const IDWriteInMemoryFontFileLoaderVtbl inmemoryfontfileloadervtbl =
More information about the wine-cvs
mailing list