[PATCH v3 1/3] quartz/filesource: Zero-initialize the file source filter.
Zebediah Figura
z.figura12 at gmail.com
Thu Feb 13 22:55:54 CST 2020
Fixes: abac070387f908f853f38eddc67206ff7c657ae2
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/quartz/filesource.c | 33 +++++++++++++--------------------
1 file changed, 13 insertions(+), 20 deletions(-)
diff --git a/dlls/quartz/filesource.c b/dlls/quartz/filesource.c
index 11cc438be29..c1f7f69d5e2 100644
--- a/dlls/quartz/filesource.c
+++ b/dlls/quartz/filesource.c
@@ -352,7 +352,7 @@ static void async_reader_destroy(struct strmbase_filter *iface)
CloseHandle(filter->port);
strmbase_filter_cleanup(&filter->filter);
- CoTaskMemFree(filter);
+ free(filter);
}
static HRESULT async_reader_query_interface(struct strmbase_filter *iface, REFIID iid, void **out)
@@ -414,31 +414,24 @@ static DWORD CALLBACK io_thread(void *arg)
HRESULT AsyncReader_create(IUnknown *outer, void **out)
{
- AsyncReader *pAsyncRead;
-
- pAsyncRead = CoTaskMemAlloc(sizeof(AsyncReader));
+ AsyncReader *object;
- if (!pAsyncRead)
+ if (!(object = calloc(1, sizeof(*object))))
return E_OUTOFMEMORY;
- strmbase_filter_init(&pAsyncRead->filter, outer, &CLSID_AsyncReader, &filter_ops);
+ strmbase_filter_init(&object->filter, outer, &CLSID_AsyncReader, &filter_ops);
- pAsyncRead->IFileSourceFilter_iface.lpVtbl = &FileSource_Vtbl;
+ object->IFileSourceFilter_iface.lpVtbl = &FileSource_Vtbl;
+ object->IAsyncReader_iface.lpVtbl = &FileAsyncReader_Vtbl;
- pAsyncRead->IAsyncReader_iface.lpVtbl = &FileAsyncReader_Vtbl;
-
- pAsyncRead->pszFileName = NULL;
-
- InitializeCriticalSection(&pAsyncRead->sample_cs);
- pAsyncRead->sample_cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": FileAsyncReader.sample_cs");
- InitializeConditionVariable(&pAsyncRead->sample_cv);
- pAsyncRead->port = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
- pAsyncRead->io_thread = CreateThread(NULL, 0, io_thread, pAsyncRead, 0, NULL);
-
- *out = &pAsyncRead->filter.IUnknown_inner;
-
- TRACE("-- created at %p\n", pAsyncRead);
+ InitializeCriticalSection(&object->sample_cs);
+ object->sample_cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": FileAsyncReader.sample_cs");
+ InitializeConditionVariable(&object->sample_cv);
+ object->port = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
+ object->io_thread = CreateThread(NULL, 0, io_thread, object, 0, NULL);
+ TRACE("Created file source %p.\n", object);
+ *out = &object->filter.IUnknown_inner;
return S_OK;
}
--
2.25.0
More information about the wine-devel
mailing list