Alexander Nicolaysen Sørnes <[EMAIL PROTECTED]> writes:

>  HRESULT DPNET_CreateDirectPlay8Peer(LPCLASSFACTORY iface, LPUNKNOWN 
> punkOuter, REFIID riid, LPVOID *ppobj) {
> -  WARN("(%p, %s, %p): stub.\n", punkOuter, debugstr_guid(riid), ppobj);
> -  return CLASS_E_CLASSNOTAVAILABLE;
> +    IDirectPlay8PeerImpl* Client;
> +
> +    Client = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 
> sizeof(IDirectPlay8PeerImpl));
> +
> +    if(Client == NULL)
> +    {
> +        *ppobj = NULL;
> +        WARN("Not enough memory\n");
> +        return E_OUTOFMEMORY;
> +    }
> +
> +    Client->lpVtbl = &DirectPlay8Peer_Vtbl;
> +    return IDirectPlay8PeerImpl_QueryInterface((PDIRECTPLAY8PEER)Client, 
> riid, ppobj);

You are leaking the object on error.

-- 
Alexandre Julliard
[EMAIL PROTECTED]


Reply via email to