Fabulous Adventures In Coding
Eric Lippert is a principal developer on the C# compiler team. Learn more about Eric.
Some fun for a Monday -- for some definition of fun, I suppose. Here's a recent posting to Microsoft's internal Spot The Defect mailing list.
HRESULT CInvokeHelper::InvokeHelper(IDispatch *pDisp, long dispid, SAFEARRAY **param1){ HRESULT hr; DISPPARAMS params; EXCEPINFO hrInfo; VARIANTARG args[1]; params.cArgs=1; params.rgvarg=args; params.cNamedArgs=0; params.rgvarg[0].vt=VT_SAFEARRAY | VT_I4; params.rgvarg[0].parray = *param1; hr = pDisp->Invoke(dispid,IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, ¶ms, NULL, &hrInfo, NULL); return returnVal(hr, hrInfo.scode); }HRESULT CInvokeHelper::returnVal(HRESULT invokeHr, HRESULT scodeHR){ m_invokeResult = invokeHr; if(FAILED(invokeHr)) { if(DISP_E_EXCEPTION == invokeHr) return scodeHR; return E_FAIL; } return S_OK;}
The internal Spot The Defect players found a good dozen or so defects -- some quite serious -- in this simple code. How many can you find?