[PATCH 1/6] qedit/samplegrabber: Use calloc() in sample_grabber_create().

Zebediah Figura z.figura12 at gmail.com
Mon Mar 30 17:55:11 CDT 2020


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/qedit/samplegrabber.c | 37 ++++++++++++++++---------------------
 1 file changed, 16 insertions(+), 21 deletions(-)

diff --git a/dlls/qedit/samplegrabber.c b/dlls/qedit/samplegrabber.c
index afb48bf84df..90e4102afa4 100644
--- a/dlls/qedit/samplegrabber.c
+++ b/dlls/qedit/samplegrabber.c
@@ -107,7 +107,7 @@ static void sample_grabber_destroy(struct strmbase_filter *iface)
     strmbase_source_cleanup(&filter->source);
     strmbase_passthrough_cleanup(&filter->passthrough);
     strmbase_filter_cleanup(&filter->filter);
-    CoTaskMemFree(filter);
+    free(filter);
 }
 
 static HRESULT sample_grabber_query_interface(struct strmbase_filter *iface, REFIID iid, void **out)
@@ -639,32 +639,27 @@ static const struct strmbase_source_ops source_ops =
 
 HRESULT sample_grabber_create(IUnknown *outer, IUnknown **out)
 {
-    SG_Impl* obj = NULL;
+    SG_Impl *object;
 
-    obj = CoTaskMemAlloc(sizeof(SG_Impl));
-    if (NULL == obj) {
-        *out = NULL;
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
-    }
-    ZeroMemory(obj, sizeof(SG_Impl));
 
-    strmbase_filter_init(&obj->filter, outer, &CLSID_SampleGrabber, &filter_ops);
-    obj->ISampleGrabber_iface.lpVtbl = &ISampleGrabber_VTable;
-    obj->IMemInputPin_iface.lpVtbl = &IMemInputPin_VTable;
+    strmbase_filter_init(&object->filter, outer, &CLSID_SampleGrabber, &filter_ops);
+    object->ISampleGrabber_iface.lpVtbl = &ISampleGrabber_VTable;
+    object->IMemInputPin_iface.lpVtbl = &IMemInputPin_VTable;
 
-    strmbase_sink_init(&obj->sink, &obj->filter, L"In", &sink_ops, NULL);
+    strmbase_sink_init(&object->sink, &object->filter, L"In", &sink_ops, NULL);
 
-    strmbase_source_init(&obj->source, &obj->filter, L"Out", &source_ops);
-    strmbase_passthrough_init(&obj->passthrough, (IUnknown *)&obj->source.pin.IPin_iface);
-    ISeekingPassThru_Init(&obj->passthrough.ISeekingPassThru_iface, FALSE, &obj->sink.pin.IPin_iface);
+    strmbase_source_init(&object->source, &object->filter, L"Out", &source_ops);
+    strmbase_passthrough_init(&object->passthrough, (IUnknown *)&object->source.pin.IPin_iface);
+    ISeekingPassThru_Init(&object->passthrough.ISeekingPassThru_iface, FALSE,
+            &object->sink.pin.IPin_iface);
 
-    obj->allocator = NULL;
-    obj->grabberIface = NULL;
-    obj->grabberMethod = -1;
-    obj->oneShot = OneShot_None;
-    obj->bufferLen = -1;
-    obj->bufferData = NULL;
+    object->grabberMethod = -1;
+    object->oneShot = OneShot_None;
+    object->bufferLen = -1;
 
-    *out = &obj->filter.IUnknown_inner;
+    TRACE("Created sample grabber %p.\n", object);
+    *out = &object->filter.IUnknown_inner;
     return S_OK;
 }
-- 
2.26.0




More information about the wine-devel mailing list