[PATCH] mf: Use CRT allocation functions.

Nikolay Sivov nsivov at codeweavers.com
Thu Jun 17 05:33:51 CDT 2021


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/mf/clock.c         | 26 ++++++++----------
 dlls/mf/copier.c        |  6 ++--
 dlls/mf/evr.c           | 18 ++++++------
 dlls/mf/main.c          | 57 ++++++++++++--------------------------
 dlls/mf/mf_private.h    |  3 +-
 dlls/mf/samplegrabber.c | 17 +++++-------
 dlls/mf/sar.c           | 11 ++++----
 dlls/mf/session.c       | 61 ++++++++++++++++++++---------------------
 dlls/mf/topology.c      | 32 ++++++++-------------
 9 files changed, 93 insertions(+), 138 deletions(-)

diff --git a/dlls/mf/clock.c b/dlls/mf/clock.c
index a9ca9b4528b..4a3ad7ec7c1 100644
--- a/dlls/mf/clock.c
+++ b/dlls/mf/clock.c
@@ -19,7 +19,6 @@
 #define COBJMACROS
 
 #include "wine/debug.h"
-#include "wine/heap.h"
 #include "wine/list.h"
 
 #include "mf_private.h"
@@ -174,7 +173,7 @@ static ULONG WINAPI sink_notification_Release(IUnknown *iface)
     if (!refcount)
     {
         IMFClockStateSink_Release(notification->sink);
-        heap_free(notification);
+        free(notification);
     }
 
     return refcount;
@@ -194,8 +193,7 @@ static void clock_notify_async_sink(struct presentation_clock *clock, MFTIME sys
     IMFAsyncResult *result;
     HRESULT hr;
 
-    object = heap_alloc(sizeof(*object));
-    if (!object)
+    if (!(object = malloc(sizeof(*object))))
         return;
 
     object->IUnknown_iface.lpVtbl = &sinknotificationvtbl;
@@ -279,7 +277,7 @@ static ULONG WINAPI present_clock_Release(IMFPresentationClock *iface)
         {
             list_remove(&sink->entry);
             IMFClockStateSink_Release(sink->state_sink);
-            heap_free(sink);
+            free(sink);
         }
         LIST_FOR_EACH_ENTRY_SAFE(timer, timer2, &clock->timers, struct clock_timer, entry)
         {
@@ -287,7 +285,7 @@ static ULONG WINAPI present_clock_Release(IMFPresentationClock *iface)
             IUnknown_Release(&timer->IUnknown_iface);
         }
         DeleteCriticalSection(&clock->cs);
-        heap_free(clock);
+        free(clock);
     }
 
     return refcount;
@@ -456,8 +454,7 @@ static HRESULT WINAPI present_clock_AddClockStateSink(IMFPresentationClock *ifac
     if (!state_sink)
         return E_INVALIDARG;
 
-    sink = heap_alloc(sizeof(*sink));
-    if (!sink)
+    if (!(sink = malloc(sizeof(*sink))))
         return E_OUTOFMEMORY;
 
     sink->state_sink = state_sink;
@@ -496,7 +493,7 @@ static HRESULT WINAPI present_clock_AddClockStateSink(IMFPresentationClock *ifac
     if (FAILED(hr))
     {
         IMFClockStateSink_Release(sink->state_sink);
-        heap_free(sink);
+        free(sink);
     }
 
     return hr;
@@ -520,7 +517,7 @@ static HRESULT WINAPI present_clock_RemoveClockStateSink(IMFPresentationClock *i
         {
             IMFClockStateSink_Release(sink->state_sink);
             list_remove(&sink->entry);
-            heap_free(sink);
+            free(sink);
             break;
         }
     }
@@ -868,7 +865,7 @@ static ULONG WINAPI clock_timer_Release(IUnknown *iface)
     {
         IMFAsyncResult_Release(timer->result);
         IMFAsyncCallback_Release(timer->callback);
-        heap_free(timer);
+        free(timer);
     }
 
     return refcount;
@@ -890,12 +887,12 @@ static HRESULT WINAPI present_clock_timer_SetTimer(IMFTimer *iface, DWORD flags,
 
     TRACE("%p, %#x, %s, %p, %p, %p.\n", iface, flags, debugstr_time(time), callback, state, cancel_key);
 
-    if (!(clock_timer = heap_alloc_zero(sizeof(*clock_timer))))
+    if (!(clock_timer = calloc(1, sizeof(*clock_timer))))
         return E_OUTOFMEMORY;
 
     if (FAILED(hr = MFCreateAsyncResult(NULL, NULL, state, &clock_timer->result)))
     {
-        heap_free(clock_timer);
+        free(clock_timer);
         return hr;
     }
 
@@ -1140,8 +1137,7 @@ HRESULT WINAPI MFCreatePresentationClock(IMFPresentationClock **clock)
 
     TRACE("%p.\n", clock);
 
-    object = heap_alloc_zero(sizeof(*object));
-    if (!object)
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
     object->IMFPresentationClock_iface.lpVtbl = &presentationclockvtbl;
diff --git a/dlls/mf/copier.c b/dlls/mf/copier.c
index 1a07d6abefd..b05ae3383ab 100644
--- a/dlls/mf/copier.c
+++ b/dlls/mf/copier.c
@@ -23,7 +23,6 @@
 #include "mf_private.h"
 
 #include "wine/debug.h"
-#include "wine/heap.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(mfplat);
 
@@ -92,7 +91,7 @@ static ULONG WINAPI sample_copier_transform_Release(IMFTransform *iface)
         if (transform->buffer_type)
             IMFMediaType_Release(transform->buffer_type);
         DeleteCriticalSection(&transform->cs);
-        heap_free(transform);
+        free(transform);
     }
 
     return refcount;
@@ -576,8 +575,7 @@ HRESULT WINAPI MFCreateSampleCopierMFT(IMFTransform **transform)
 
     TRACE("%p.\n", transform);
 
-    object = heap_alloc_zero(sizeof(*object));
-    if (!object)
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
     object->IMFTransform_iface.lpVtbl = &sample_copier_transform_vtbl;
diff --git a/dlls/mf/evr.c b/dlls/mf/evr.c
index 6a4332965b6..d048ea59681 100644
--- a/dlls/mf/evr.c
+++ b/dlls/mf/evr.c
@@ -286,7 +286,7 @@ static ULONG WINAPI video_stream_sink_Release(IMFStreamSink *iface)
         if (stream->allocator)
             IMFVideoSampleAllocator_Release(stream->allocator);
         DeleteCriticalSection(&stream->cs);
-        heap_free(stream);
+        free(stream);
     }
 
     return refcount;
@@ -1053,7 +1053,7 @@ static HRESULT video_renderer_stream_create(struct video_renderer *renderer, uns
     unsigned int value;
     HRESULT hr;
 
-    if (!(stream = heap_alloc_zero(sizeof(*stream))))
+    if (!(stream = calloc(1, sizeof(*stream))))
         return E_OUTOFMEMORY;
 
     stream->IMFStreamSink_iface.lpVtbl = &video_stream_sink_vtbl;
@@ -1179,7 +1179,7 @@ static ULONG WINAPI video_renderer_sink_Release(IMFMediaSink *iface)
         if (renderer->attributes)
             IMFAttributes_Release(renderer->attributes);
         DeleteCriticalSection(&renderer->cs);
-        heap_free(renderer);
+        free(renderer);
     }
 
     return refcount;
@@ -1456,7 +1456,7 @@ static HRESULT WINAPI video_renderer_sink_Shutdown(IMFMediaSink *iface)
         IMFMediaSink_Release(iface);
         renderer->streams[i] = NULL;
     }
-    heap_free(renderer->streams);
+    free(renderer->streams);
     renderer->stream_count = 0;
     renderer->stream_size = 0;
     IMFMediaEventQueue_Shutdown(renderer->event_queue);
@@ -1637,8 +1637,8 @@ static HRESULT video_renderer_configure_mixer(struct video_renderer *renderer)
         /* Create stream sinks for inputs that mixer already has by default. */
         if (SUCCEEDED(IMFTransform_GetStreamCount(renderer->mixer, &input_count, &output_count)))
         {
-            ids = heap_calloc(input_count, sizeof(*ids));
-            oids = heap_calloc(output_count, sizeof(*oids));
+            ids = calloc(input_count, sizeof(*ids));
+            oids = calloc(output_count, sizeof(*oids));
 
             if (ids && oids)
             {
@@ -1652,8 +1652,8 @@ static HRESULT video_renderer_configure_mixer(struct video_renderer *renderer)
 
             }
 
-            heap_free(ids);
-            heap_free(oids);
+            free(ids);
+            free(oids);
         }
     }
 
@@ -2766,7 +2766,7 @@ static HRESULT evr_create_object(IMFAttributes *attributes, void *user_context,
 
     TRACE("%p, %p, %p.\n", attributes, user_context, obj);
 
-    if (!(object = heap_alloc_zero(sizeof(*object))))
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
     object->IMFMediaSink_iface.lpVtbl = &video_renderer_sink_vtbl;
diff --git a/dlls/mf/main.c b/dlls/mf/main.c
index 236bc45c9ec..acbb8377e52 100644
--- a/dlls/mf/main.c
+++ b/dlls/mf/main.c
@@ -29,7 +29,6 @@
 #include "mf_private.h"
 
 #include "wine/debug.h"
-#include "wine/heap.h"
 #include "wine/list.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(mfplat);
@@ -93,7 +92,7 @@ static ULONG WINAPI activate_object_Release(IMFActivate *iface)
         if (activate->object)
             IUnknown_Release(activate->object);
         IMFAttributes_Release(activate->attributes);
-        heap_free(activate);
+        free(activate);
     }
 
     return refcount;
@@ -461,15 +460,14 @@ HRESULT create_activation_object(void *context, const struct activate_funcs *fun
     struct activate_object *object;
     HRESULT hr;
 
-    object = heap_alloc_zero(sizeof(*object));
-    if (!object)
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
     object->IMFActivate_iface.lpVtbl = &activate_object_vtbl;
     object->refcount = 1;
     if (FAILED(hr = MFCreateAttributes(&object->attributes, 0)))
     {
-        heap_free(object);
+        free(object);
         return hr;
     }
     object->funcs = funcs;
@@ -620,12 +618,12 @@ static ULONG WINAPI file_scheme_handler_Release(IMFSchemeHandler *iface)
             IMFAsyncResult_Release(result->result);
             if (result->object)
                 IUnknown_Release(result->object);
-            heap_free(result);
+            free(result);
         }
         DeleteCriticalSection(&handler->cs);
         if (handler->resolver)
             IMFSourceResolver_Release(handler->resolver);
-        heap_free(handler);
+        free(handler);
     }
 
     return refcount;
@@ -683,8 +681,8 @@ static ULONG WINAPI create_object_context_Release(IUnknown *iface)
     {
         if (context->props)
             IPropertyStore_Release(context->props);
-        heap_free(context->url);
-        heap_free(context);
+        free(context->url);
+        free(context);
     }
 
     return refcount;
@@ -697,23 +695,6 @@ static const IUnknownVtbl create_object_context_vtbl =
     create_object_context_Release,
 };
 
-static WCHAR *heap_strdupW(const WCHAR *str)
-{
-    WCHAR *ret = NULL;
-
-    if (str)
-    {
-        unsigned int size;
-
-        size = (lstrlenW(str) + 1) * sizeof(WCHAR);
-        ret = heap_alloc(size);
-        if (ret)
-            memcpy(ret, str, size);
-    }
-
-    return ret;
-}
-
 static HRESULT WINAPI file_scheme_handler_BeginCreateObject(IMFSchemeHandler *iface, const WCHAR *url, DWORD flags,
         IPropertyStore *props, IUnknown **cancel_cookie, IMFAsyncCallback *callback, IUnknown *state)
 {
@@ -730,8 +711,7 @@ static HRESULT WINAPI file_scheme_handler_BeginCreateObject(IMFSchemeHandler *if
     if (FAILED(hr = MFCreateAsyncResult(NULL, callback, state, &caller)))
         return hr;
 
-    context = heap_alloc(sizeof(*context));
-    if (!context)
+    if (!(context = malloc(sizeof(*context))))
     {
         IMFAsyncResult_Release(caller);
         return E_OUTOFMEMORY;
@@ -743,7 +723,7 @@ static HRESULT WINAPI file_scheme_handler_BeginCreateObject(IMFSchemeHandler *if
     if (context->props)
         IPropertyStore_AddRef(context->props);
     context->flags = flags;
-    context->url = heap_strdupW(url);
+    context->url = wcsdup(url);
     if (!context->url)
     {
         IMFAsyncResult_Release(caller);
@@ -800,7 +780,7 @@ static HRESULT WINAPI file_scheme_handler_EndCreateObject(IMFSchemeHandler *ifac
         *object = found->object;
         hr = IMFAsyncResult_GetStatus(found->result);
         IMFAsyncResult_Release(found->result);
-        heap_free(found);
+        free(found);
     }
     else
     {
@@ -838,7 +818,7 @@ static HRESULT WINAPI file_scheme_handler_CancelObjectCreation(IMFSchemeHandler
         IMFAsyncResult_Release(found->result);
         if (found->object)
             IUnknown_Release(found->object);
-        heap_free(found);
+        free(found);
     }
 
     return found ? S_OK : MF_E_UNEXPECTED;
@@ -957,7 +937,7 @@ static HRESULT WINAPI file_scheme_handler_callback_Invoke(IMFAsyncCallback *ifac
         }
     }
 
-    handler_result = heap_alloc(sizeof(*handler_result));
+    handler_result = malloc(sizeof(*handler_result));
     if (handler_result)
     {
         handler_result->result = caller;
@@ -1000,8 +980,7 @@ static HRESULT file_scheme_handler_construct(REFIID riid, void **obj)
 
     TRACE("%s, %p.\n", debugstr_guid(riid), obj);
 
-    handler = heap_alloc_zero(sizeof(*handler));
-    if (!handler)
+    if (!(handler = calloc(1, sizeof(*handler))))
         return E_OUTOFMEMORY;
 
     handler->IMFSchemeHandler_iface.lpVtbl = &file_scheme_handler_vtbl;
@@ -1098,8 +1077,7 @@ static HRESULT mf_get_handler_strings(const WCHAR *path, WCHAR filter, unsigned
     int i, index;
     WCHAR *buffW;
 
-    buffW = heap_calloc(maxlen, sizeof(*buffW));
-    if (!buffW)
+    if (!(buffW = calloc(maxlen, sizeof(*buffW))))
         return E_OUTOFMEMORY;
 
     memset(dst, 0, sizeof(*dst));
@@ -1135,7 +1113,7 @@ static HRESULT mf_get_handler_strings(const WCHAR *path, WCHAR filter, unsigned
     if (FAILED(hr))
         PropVariantClear(dst);
 
-    heap_free(buffW);
+    free(buffW);
 
     return hr;
 }
@@ -1276,7 +1254,7 @@ static ULONG WINAPI simple_type_handler_Release(IMFMediaTypeHandler *iface)
         if (handler->media_type)
             IMFMediaType_Release(handler->media_type);
         DeleteCriticalSection(&handler->cs);
-        heap_free(handler);
+        free(handler);
     }
 
     return refcount;
@@ -1410,8 +1388,7 @@ HRESULT WINAPI MFCreateSimpleTypeHandler(IMFMediaTypeHandler **handler)
 
     TRACE("%p.\n", handler);
 
-    object = heap_alloc_zero(sizeof(*object));
-    if (!object)
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
     object->IMFMediaTypeHandler_iface.lpVtbl = &simple_type_handler_vtbl;
diff --git a/dlls/mf/mf_private.h b/dlls/mf/mf_private.h
index cc270a8cf57..2f81eaa13b0 100644
--- a/dlls/mf/mf_private.h
+++ b/dlls/mf/mf_private.h
@@ -20,7 +20,6 @@
 #include "mfidl.h"
 #include "mfapi.h"
 
-#include "wine/heap.h"
 #include "wine/debug.h"
 
 static inline BOOL mf_array_reserve(void **elements, size_t *capacity, size_t count, size_t size)
@@ -41,7 +40,7 @@ static inline BOOL mf_array_reserve(void **elements, size_t *capacity, size_t co
     if (new_capacity < count)
         new_capacity = max_capacity;
 
-    if (!(new_elements = heap_realloc(*elements, new_capacity * size)))
+    if (!(new_elements = realloc(*elements, new_capacity * size)))
         return FALSE;
 
     *elements = new_elements;
diff --git a/dlls/mf/samplegrabber.c b/dlls/mf/samplegrabber.c
index 4a0be291015..e0287e1e1db 100644
--- a/dlls/mf/samplegrabber.c
+++ b/dlls/mf/samplegrabber.c
@@ -24,7 +24,6 @@
 #include "mf_private.h"
 
 #include "wine/debug.h"
-#include "wine/heap.h"
 #include "wine/list.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(mfplat);
@@ -105,7 +104,7 @@ static void sample_grabber_free_private(void *user_context)
     struct sample_grabber_activate_context *context = user_context;
     IMFMediaType_Release(context->media_type);
     IMFSampleGrabberSinkCallback_Release(context->callback);
-    heap_free(context);
+    free(context);
 }
 
 static struct sample_grabber *impl_from_IMFMediaSink(IMFMediaSink *iface)
@@ -194,7 +193,7 @@ static void stream_release_pending_item(struct scheduled_item *item)
             PropVariantClear(&item->u.marker.context);
             break;
     }
-    heap_free(item);
+    free(item);
 }
 
 static ULONG WINAPI sample_grabber_stream_Release(IMFStreamSink *iface)
@@ -386,7 +385,7 @@ static HRESULT stream_queue_sample(struct sample_grabber *grabber, IMFSample *sa
     if (FAILED(hr = IMFSample_GetSampleTime(sample, &sampletime)))
         return hr;
 
-    if (!(item = heap_alloc_zero(sizeof(*item))))
+    if (!(item = calloc(1, sizeof(*item))))
         return E_OUTOFMEMORY;
 
     item->type = ITEM_TYPE_SAMPLE;
@@ -467,7 +466,7 @@ static HRESULT stream_place_marker(struct sample_grabber *grabber, MFSTREAMSINK_
         return S_OK;
     }
 
-    if (!(item = heap_alloc_zero(sizeof(*item))))
+    if (!(item = calloc(1, sizeof(*item))))
         return E_OUTOFMEMORY;
 
     item->type = ITEM_TYPE_MARKER;
@@ -866,7 +865,7 @@ static ULONG WINAPI sample_grabber_sink_Release(IMFMediaSink *iface)
             IMFAttributes_Release(grabber->sample_attributes);
         sample_grabber_release_pending_items(grabber);
         DeleteCriticalSection(&grabber->cs);
-        heap_free(grabber);
+        free(grabber);
     }
 
     return refcount;
@@ -1401,8 +1400,7 @@ static HRESULT sample_grabber_create_object(IMFAttributes *attributes, void *use
     if (FAILED(IMFMediaType_GetMajorType(context->media_type, &guid)))
         return MF_E_INVALIDMEDIATYPE;
 
-    object = heap_alloc_zero(sizeof(*object));
-    if (!object)
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
     object->IMFMediaSink_iface.lpVtbl = &sample_grabber_sink_vtbl;
@@ -1478,8 +1476,7 @@ HRESULT WINAPI MFCreateSampleGrabberSinkActivate(IMFMediaType *media_type, IMFSa
     if (!media_type || !callback || !activate)
         return E_POINTER;
 
-    context = heap_alloc_zero(sizeof(*context));
-    if (!context)
+    if (!(context = calloc(1, sizeof(*context))))
         return E_OUTOFMEMORY;
 
     context->media_type = media_type;
diff --git a/dlls/mf/sar.c b/dlls/mf/sar.c
index 9030b3a81c0..77cbfcb21da 100644
--- a/dlls/mf/sar.c
+++ b/dlls/mf/sar.c
@@ -26,7 +26,6 @@
 #include "audioclient.h"
 
 #include "wine/debug.h"
-#include "wine/heap.h"
 #include "wine/list.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(mfplat);
@@ -121,7 +120,7 @@ static void release_pending_object(struct queued_object *object)
             PropVariantClear(&object->u.marker.context);
             break;
     }
-    heap_free(object);
+    free(object);
 }
 
 static struct audio_renderer *impl_from_IMFMediaSink(IMFMediaSink *iface)
@@ -279,7 +278,7 @@ static ULONG WINAPI audio_renderer_sink_Release(IMFMediaSink *iface)
         audio_renderer_release_audio_client(renderer);
         CloseHandle(renderer->buffer_ready_event);
         DeleteCriticalSection(&renderer->cs);
-        heap_free(renderer);
+        free(renderer);
     }
 
     return refcount;
@@ -1332,7 +1331,7 @@ static HRESULT stream_queue_sample(struct audio_renderer *renderer, IMFSample *s
 {
     struct queued_object *object;
 
-    if (!(object = heap_alloc_zero(sizeof(*object))))
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
     object->type = OBJECT_TYPE_SAMPLE;
@@ -1372,7 +1371,7 @@ static HRESULT stream_place_marker(struct audio_renderer *renderer, MFSTREAMSINK
     struct queued_object *marker;
     HRESULT hr = S_OK;
 
-    if (!(marker = heap_alloc_zero(sizeof(*marker))))
+    if (!(marker = calloc(1, sizeof(*marker))))
         return E_OUTOFMEMORY;
 
     marker->type = OBJECT_TYPE_MARKER;
@@ -1843,7 +1842,7 @@ static HRESULT sar_create_object(IMFAttributes *attributes, void *user_context,
 
     TRACE("%p, %p, %p.\n", attributes, user_context, obj);
 
-    if (!(renderer = heap_alloc_zero(sizeof(*renderer))))
+    if (!(renderer = calloc(1, sizeof(*renderer))))
         return E_OUTOFMEMORY;
 
     renderer->IMFMediaSink_iface.lpVtbl = &audio_renderer_sink_vtbl;
diff --git a/dlls/mf/session.c b/dlls/mf/session.c
index 24aae77ac3a..8d9325abc53 100644
--- a/dlls/mf/session.c
+++ b/dlls/mf/session.c
@@ -28,7 +28,6 @@
 #include "evr.h"
 
 #include "wine/debug.h"
-#include "wine/heap.h"
 #include "wine/list.h"
 
 #include "mf_private.h"
@@ -431,7 +430,7 @@ static ULONG WINAPI session_op_Release(IUnknown *iface)
             default:
                 ;
         }
-        heap_free(op);
+        free(op);
     }
 
     return refcount;
@@ -448,7 +447,7 @@ static HRESULT create_session_op(enum session_command command, struct session_op
 {
     struct session_op *op;
 
-    if (!(op = heap_alloc_zero(sizeof(*op))))
+    if (!(op = calloc(1, sizeof(*op))))
         return E_OUTOFMEMORY;
 
     op->IUnknown_iface.lpVtbl = &session_op_vtbl;
@@ -511,7 +510,7 @@ static void session_clear_topologies(struct media_session *session)
     {
         list_remove(&ptr->entry);
         IMFTopology_Release(ptr->topology);
-        heap_free(ptr);
+        free(ptr);
     }
 }
 
@@ -640,7 +639,7 @@ static void transform_release_sample(struct sample *sample)
     list_remove(&sample->entry);
     if (sample->sample)
         IMFSample_Release(sample->sample);
-    heap_free(sample);
+    free(sample);
 }
 
 static void transform_stream_drop_samples(struct transform_stream *stream)
@@ -666,10 +665,10 @@ static void release_topo_node(struct topo_node *node)
                 transform_stream_drop_samples(&node->u.transform.inputs[i]);
             for (i = 0; i < node->u.transform.output_count; ++i)
                 transform_stream_drop_samples(&node->u.transform.outputs[i]);
-            heap_free(node->u.transform.inputs);
-            heap_free(node->u.transform.outputs);
-            heap_free(node->u.transform.input_map);
-            heap_free(node->u.transform.output_map);
+            free(node->u.transform.inputs);
+            free(node->u.transform.outputs);
+            free(node->u.transform.input_map);
+            free(node->u.transform.output_map);
             break;
         case MF_TOPOLOGY_OUTPUT_NODE:
             if (node->u.sink.allocator)
@@ -688,7 +687,7 @@ static void release_topo_node(struct topo_node *node)
         IUnknown_Release(node->object.object);
     if (node->node)
         IMFTopologyNode_Release(node->node);
-    heap_free(node);
+    free(node);
 }
 
 static void session_shutdown_current_topology(struct media_session *session)
@@ -771,7 +770,7 @@ static void session_clear_presentation(struct media_session *session)
             IMFMediaSource_Release(source->source);
         if (source->pd)
             IMFPresentationDescriptor_Release(source->pd);
-        heap_free(source);
+        free(source);
     }
 
     LIST_FOR_EACH_ENTRY_SAFE(node, node2, &session->presentation.nodes, struct topo_node, entry)
@@ -790,7 +789,7 @@ static void session_clear_presentation(struct media_session *session)
             IMFMediaSinkPreroll_Release(sink->preroll);
         if (sink->event_generator)
             IMFMediaEventGenerator_Release(sink->event_generator);
-        heap_free(sink);
+        free(sink);
     }
 }
 
@@ -1078,7 +1077,7 @@ static void session_release_media_source(struct media_source *source)
     IMFMediaSource_Release(source->source);
     if (source->pd)
         IMFPresentationDescriptor_Release(source->pd);
-    heap_free(source);
+    free(source);
 }
 
 static HRESULT session_add_media_source(struct media_session *session, IMFTopologyNode *node, IMFMediaSource *source)
@@ -1089,7 +1088,7 @@ static HRESULT session_add_media_source(struct media_session *session, IMFTopolo
     if (session_get_media_source(session, source))
         return S_FALSE;
 
-    if (!(media_source = heap_alloc_zero(sizeof(*media_source))))
+    if (!(media_source = calloc(1, sizeof(*media_source))))
         return E_OUTOFMEMORY;
 
     media_source->source = source;
@@ -1150,7 +1149,7 @@ static HRESULT session_add_media_sink(struct media_session *session, IMFTopology
             return S_FALSE;
     }
 
-    if (!(media_sink = heap_alloc_zero(sizeof(*media_sink))))
+    if (!(media_sink = calloc(1, sizeof(*media_sink))))
         return E_OUTOFMEMORY;
 
     media_sink->sink = sink;
@@ -1188,14 +1187,14 @@ static HRESULT session_set_transform_stream_info(struct topo_node *node)
     hr = IMFTransform_GetStreamCount(node->object.transform, &input_count, &output_count);
     if (SUCCEEDED(hr) && (input_count > 1 || output_count > 1))
     {
-        input_map = heap_calloc(input_count, sizeof(*input_map));
-        output_map = heap_calloc(output_count, sizeof(*output_map));
+        input_map = calloc(input_count, sizeof(*input_map));
+        output_map = calloc(output_count, sizeof(*output_map));
         if (FAILED(IMFTransform_GetStreamIDs(node->object.transform, input_count, input_map,
                 output_count, output_map)))
         {
             /* Assume sequential identifiers. */
-            heap_free(input_map);
-            heap_free(output_map);
+            free(input_map);
+            free(output_map);
             input_map = output_map = NULL;
         }
     }
@@ -1205,13 +1204,13 @@ static HRESULT session_set_transform_stream_info(struct topo_node *node)
         node->u.transform.input_map = input_map;
         node->u.transform.output_map = output_map;
 
-        streams = heap_calloc(input_count, sizeof(*streams));
+        streams = calloc(input_count, sizeof(*streams));
         for (i = 0; i < input_count; ++i)
             list_init(&streams[i].samples);
         node->u.transform.inputs = streams;
         node->u.transform.input_count = input_count;
 
-        streams = heap_calloc(output_count, sizeof(*streams));
+        streams = calloc(output_count, sizeof(*streams));
         for (i = 0; i < output_count; ++i)
         {
             list_init(&streams[i].samples);
@@ -1306,7 +1305,7 @@ static HRESULT session_append_node(struct media_session *session, IMFTopologyNod
     IMFStreamDescriptor *sd;
     HRESULT hr = S_OK;
 
-    if (!(topo_node = heap_alloc_zero(sizeof(*topo_node))))
+    if (!(topo_node = calloc(1, sizeof(*topo_node))))
         return E_OUTOFMEMORY;
 
     IMFTopologyNode_GetNodeType(node, &topo_node->type);
@@ -1573,7 +1572,7 @@ static void session_set_topology(struct media_session *session, DWORD flags, IMF
     {
         struct queued_topology *queued_topology;
 
-        if ((queued_topology = heap_alloc_zero(sizeof(*queued_topology))))
+        if ((queued_topology = calloc(1, sizeof(*queued_topology))))
         {
             queued_topology->topology = topology;
             IMFTopology_AddRef(queued_topology->topology);
@@ -1655,7 +1654,7 @@ static ULONG WINAPI mfsession_Release(IMFMediaSession *iface)
         if (session->quality_manager)
             IMFQualityManager_Release(session->quality_manager);
         DeleteCriticalSection(&session->cs);
-        heap_free(session);
+        free(session);
     }
 
     return refcount;
@@ -2596,7 +2595,7 @@ static void session_set_sink_stream_state(struct media_session *session, IMFStre
 
 static struct sample *transform_create_sample(IMFSample *sample)
 {
-    struct sample *sample_entry = heap_alloc_zero(sizeof(*sample_entry));
+    struct sample *sample_entry = calloc(1, sizeof(*sample_entry));
 
     if (sample_entry)
     {
@@ -2660,7 +2659,7 @@ static HRESULT transform_node_pull_samples(const struct media_session *session,
     unsigned int i;
     HRESULT hr = E_UNEXPECTED;
 
-    if (!(buffers = heap_calloc(node->u.transform.output_count, sizeof(*buffers))))
+    if (!(buffers = calloc(node->u.transform.output_count, sizeof(*buffers))))
         return E_OUTOFMEMORY;
 
     for (i = 0; i < node->u.transform.output_count; ++i)
@@ -2703,7 +2702,7 @@ static HRESULT transform_node_pull_samples(const struct media_session *session,
             IMFSample_Release(buffers[i].pSample);
     }
 
-    heap_free(buffers);
+    free(buffers);
 
     return hr;
 }
@@ -3611,8 +3610,7 @@ HRESULT WINAPI MFCreateMediaSession(IMFAttributes *config, IMFMediaSession **ses
 
     TRACE("%p, %p.\n", config, session);
 
-    object = heap_alloc_zero(sizeof(*object));
-    if (!object)
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
     object->IMFMediaSession_iface.lpVtbl = &mfmediasessionvtbl;
@@ -3749,7 +3747,7 @@ static ULONG WINAPI standard_quality_manager_Release(IMFQualityManager *iface)
         if (manager->topology)
             IMFTopology_Release(manager->topology);
         DeleteCriticalSection(&manager->cs);
-        heap_free(manager);
+        free(manager);
     }
 
     return refcount;
@@ -3941,8 +3939,7 @@ HRESULT WINAPI MFCreateStandardQualityManager(IMFQualityManager **manager)
 
     TRACE("%p.\n", manager);
 
-    object = heap_alloc_zero(sizeof(*object));
-    if (!object)
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
     object->IMFQualityManager_iface.lpVtbl = &standard_quality_manager_vtbl;
diff --git a/dlls/mf/topology.c b/dlls/mf/topology.c
index a054eca27e1..f97c0cc75d3 100644
--- a/dlls/mf/topology.c
+++ b/dlls/mf/topology.c
@@ -256,7 +256,7 @@ static void topology_clear(struct topology *topology)
         topology_node_disconnect(topology->nodes.nodes[i]);
         IMFTopologyNode_Release(&topology->nodes.nodes[i]->IMFTopologyNode_iface);
     }
-    heap_free(topology->nodes.nodes);
+    free(topology->nodes.nodes);
     topology->nodes.nodes = NULL;
     topology->nodes.count = 0;
     topology->nodes.size = 0;
@@ -274,7 +274,7 @@ static ULONG WINAPI topology_Release(IMFTopology *iface)
         if (topology->attributes)
             IMFAttributes_Release(topology->attributes);
         topology_clear(topology);
-        heap_free(topology);
+        free(topology);
     }
 
     return refcount;
@@ -885,8 +885,7 @@ HRESULT WINAPI MFCreateTopology(IMFTopology **topology)
     if (!topology)
         return E_POINTER;
 
-    object = heap_alloc_zero(sizeof(*object));
-    if (!object)
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
     object->IMFTopology_iface.lpVtbl = &topologyvtbl;
@@ -961,11 +960,11 @@ static ULONG WINAPI topology_node_Release(IMFTopologyNode *iface)
             if (node->outputs.streams[i].preferred_type)
                 IMFMediaType_Release(node->outputs.streams[i].preferred_type);
         }
-        heap_free(node->inputs.streams);
-        heap_free(node->outputs.streams);
+        free(node->inputs.streams);
+        free(node->outputs.streams);
         IMFAttributes_Release(node->attributes);
         DeleteCriticalSection(&node->cs);
-        heap_free(node);
+        free(node);
     }
 
     return refcount;
@@ -1767,8 +1766,7 @@ static HRESULT create_topology_node(MF_TOPOLOGY_TYPE node_type, struct topology_
 {
     HRESULT hr;
 
-    *node = heap_alloc_zero(sizeof(**node));
-    if (!*node)
+    if (!(*node = calloc(1, sizeof(**node))))
         return E_OUTOFMEMORY;
 
     (*node)->IMFTopologyNode_iface.lpVtbl = &topologynodevtbl;
@@ -1777,7 +1775,7 @@ static HRESULT create_topology_node(MF_TOPOLOGY_TYPE node_type, struct topology_
     hr = MFCreateAttributes(&(*node)->attributes, 0);
     if (FAILED(hr))
     {
-        heap_free(*node);
+        free(*node);
         return hr;
     }
     (*node)->id = ((TOPOID)GetCurrentProcessId() << 32) | InterlockedIncrement(&next_node_id);
@@ -1931,9 +1929,7 @@ static ULONG WINAPI topology_loader_Release(IMFTopoLoader *iface)
     TRACE("%p, refcount %u.\n", iface, refcount);
 
     if (!refcount)
-    {
-        heap_free(loader);
-    }
+        free(loader);
 
     return refcount;
 }
@@ -2692,8 +2688,7 @@ HRESULT WINAPI MFCreateTopoLoader(IMFTopoLoader **loader)
     if (!loader)
         return E_POINTER;
 
-    object = heap_alloc(sizeof(*object));
-    if (!object)
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
     object->IMFTopoLoader_iface.lpVtbl = &topologyloadervtbl;
@@ -2751,9 +2746,7 @@ static ULONG WINAPI seq_source_Release(IMFSequencerSource *iface)
     TRACE("%p, refcount %u.\n", iface, refcount);
 
     if (!refcount)
-    {
-        heap_free(seq_source);
-    }
+        free(seq_source);
 
     return refcount;
 }
@@ -2855,8 +2848,7 @@ HRESULT WINAPI MFCreateSequencerSource(IUnknown *reserved, IMFSequencerSource **
     if (!seq_source)
         return E_POINTER;
 
-    object = heap_alloc(sizeof(*object));
-    if (!object)
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
     object->IMFSequencerSource_iface.lpVtbl = &seqsourcevtbl;
-- 
2.30.2




More information about the wine-devel mailing list