I have a member for my class:
class MyNativeXPCOMObject ... {
...
private:
nsCOMPtr<nsISomeInterface> someInterface_;
...
};
I have methods that do this:
NS_IMETHODIMP MyNativeXPCOMObject::GetSomeObject(nsISomeInterface** aSomeInterface) {
NS_IF_ADDREF(someInterface_);
*aSomeInterface = someInterface_;
return NS_OK;
}
But Gecko 9 enforces that you're not allowed to call AddRef()
or Release()
on nsCOMPtr<>
s. So now I'm doing this:
NS_IMETHODIMP MyNativeXPCOMObject::GetSomeObject(nsISomeInterface** aSomeInterface) {
NS_IF_ADDREF(someInterface_.get()); // <--- Added .get()!
*aSomeInterface = someInterface_;
return NS_OK;
}
But directly accessing the raw pointer makes me feel dirty. What is the proper way to AddRef()
for out params in getters?
The documentation was not helpful.