From 354ccf3fdb342e45f81b0d8f0ba9816e6932613b Mon Sep 17 00:00:00 2001 From: Michael Stefaniuc Date: Sat, 17 Dec 2022 23:00:33 +0100 Subject: [PATCH] dmime: Split the segment object creation into a separate helper. --- dlls/dmime/segment.c | 52 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c index b1dd21c1242..b7d7f2142b8 100644 --- a/dlls/dmime/segment.c +++ b/dlls/dmime/segment.c @@ -826,28 +826,38 @@ static const IPersistStreamVtbl persiststream_vtbl = { unimpl_IPersistStream_GetSizeMax }; +IDirectMusicSegment8Impl *create_segment(void) +{ + IDirectMusicSegment8Impl *obj; + + if (!(obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*obj)))) + return NULL; + + obj->IDirectMusicSegment8_iface.lpVtbl = &dmsegment8_vtbl; + obj->ref = 1; + dmobject_init(&obj->dmobj, &CLSID_DirectMusicSegment, (IUnknown *)&obj->IDirectMusicSegment8_iface); + obj->dmobj.IDirectMusicObject_iface.lpVtbl = &dmobject_vtbl; + obj->dmobj.IPersistStream_iface.lpVtbl = &persiststream_vtbl; + list_init (&obj->Tracks); + + DMIME_LockModule(); + + return obj; +} + /* for ClassFactory */ -HRESULT create_dmsegment(REFIID lpcGUID, void **ppobj) +HRESULT create_dmsegment(REFIID guid, void **ret_iface) { - IDirectMusicSegment8Impl* obj; - HRESULT hr; + IDirectMusicSegment8Impl *obj; + HRESULT hr; - obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicSegment8Impl)); - if (NULL == obj) { - *ppobj = NULL; - return E_OUTOFMEMORY; - } - obj->IDirectMusicSegment8_iface.lpVtbl = &dmsegment8_vtbl; - obj->ref = 1; - dmobject_init(&obj->dmobj, &CLSID_DirectMusicSegment, - (IUnknown *)&obj->IDirectMusicSegment8_iface); - obj->dmobj.IDirectMusicObject_iface.lpVtbl = &dmobject_vtbl; - obj->dmobj.IPersistStream_iface.lpVtbl = &persiststream_vtbl; - list_init (&obj->Tracks); - - DMIME_LockModule(); - hr = IDirectMusicSegment8_QueryInterface(&obj->IDirectMusicSegment8_iface, lpcGUID, ppobj); - IDirectMusicSegment8_Release(&obj->IDirectMusicSegment8_iface); - - return hr; + if (!(obj = create_segment())) { + *ret_iface = NULL; + return E_OUTOFMEMORY; + } + + hr = IDirectMusicSegment8_QueryInterface(&obj->IDirectMusicSegment8_iface, guid, ret_iface); + IDirectMusicSegment8_Release(&obj->IDirectMusicSegment8_iface); + + return hr; } -- 2.11.4.GIT