Hi,

In my component i had a method like GetWindowForNode(nsIDOMNode *node , nsIDOMWindow **window)

NS_IMETHODIMP nsRecorderImpl::GetWindowForNode(nsIDOMNode *node,nsIDOMWindow **window)
{
    nsresult rv;
    nsCOMPtr<nsIDOMDocument> ownerDoc;
    rv = node->GetOwnerDocument(getter_AddRefs(ownerDoc));
    if(NS_SUCCEEDED(rv) && ownerDoc)
    {
        nsCOMPtr<nsIDOMDocumentView> docView(do_QueryInterface(ownerDoc,&rv));
       
        if(!(NS_SUCCEEDED(rv)) || !docView) return NS_ERROR_FAILURE;
       
        nsCOMPtr<nsIDOMAbstractView> view;
        rv = docView->GetDefaultView(getter_AddRefs(view));
   
        if(!(NS_SUCCEEDED(rv)) || !view) return NS_ERROR_FAILURE;

        nsCOMPtr<nsIDOMWindowInternal> internal= do_QueryInterface(view,&rv);
        if(!(NS_SUCCEEDED(rv)) || !internal) return NS_ERROR_FAILURE;
       

        nsCOMPtr<nsIDOMWindow> domWindow(do_QueryInterface(internal,&rv));
       
        if(NS_SUCCEEDED(rv) && domWindow)
        {
            *window=domWindow;
        }
        else
        {
            return NS_ERROR_FAILURE;
        }
    }
    return NS_OK;
}


I invoked this method as said below
nsCOMPtr<nsIDOMWindow> window;
rv = GetWindowForNode(node,getter_Addrefs(window));

while invoking the method as said above i am getting memory issue.

While the same method is called as
nsIDOMWindow *window;
rv = GetWindowForNode(node,&window);

There is no memory issue.

My query is whether it is appropriate to us nsCOMPtr here ?

If it is wrong please guide me where to use nsCOMPtr.

Please help me in this regard.

Thanks & Regards
S.Srinivasa Raghavan
--
WhoAmI

Reply via email to