Nikolay Sivov (@nsivov) commented about dlls/vbscript/vbdisp.c:
if(pvarRes) V_VT(pvarRes) = VT_EMPTY;
- return invoke_vbdisp(This, id, wFlags, TRUE, pdp, pvarRes);
- prev_caller = This->desc->ctx->vbcaller->caller;
- This->desc->ctx->vbcaller->caller = pspCaller;
- if(pspCaller)
IServiceProvider_AddRef(pspCaller);
- hres = invoke_vbdisp(This, id, wFlags, TRUE, pdp, pvarRes);
- This->desc->ctx->vbcaller->caller = prev_caller;
- if(pspCaller)
IServiceProvider_Release(pspCaller);
- return hres;
Why do you need to do addref/release?