Делаю себе браузер на движке ie и наткнулся на такой код в MFC:
(Mfc7, ViewHtml.cpp, ExecFormsCommand)
/////////////////////////////////////////
HRESULT hr = E_FAIL;
CComPtr<IHTMLDocument2> spDoc = (IHTMLDocument2*) GetHtmlDocument();
if (spDoc != NULL)
{
CComQIPtr<IOleCommandTarget> spCmdTarget = spDoc;
if (spCmdTarget != NULL)
hr = spCmdTarget->Exec(&CMDSETID_Forms3, dwCommandID,
OLECMDEXECOPT_DONTPROMPTUSER, pVarOut, pVarIn);
}
return hr;
////////////////////////////////////////
Как я понимаю, здесь теряется один Release()

, потому что Release() нужно вызвать и для spDoc,
и для диспатча,возвращаемого GetHtmlDocument()
Так ведь?
ps. Любители критиковать чужие браузеры, посмотрите плз
stylerbrowser.narod.ru (250kb)