vbscript: Added IActiveScript::SetScriptSite implementation.

This commit is contained in:
Jacek Caban 2011-08-30 11:36:23 +02:00 committed by Alexandre Julliard
parent ef604e3826
commit 9f907f6351
2 changed files with 29 additions and 2 deletions

View File

@ -89,8 +89,11 @@ static ULONG WINAPI VBScript_Release(IActiveScript *iface)
TRACE("(%p) ref=%d\n", iface, ref); TRACE("(%p) ref=%d\n", iface, ref);
if(!ref) if(!ref) {
if(This->site)
IActiveScriptSite_Release(This->site);
heap_free(This); heap_free(This);
}
return ref; return ref;
} }
@ -98,7 +101,27 @@ static ULONG WINAPI VBScript_Release(IActiveScript *iface)
static HRESULT WINAPI VBScript_SetScriptSite(IActiveScript *iface, IActiveScriptSite *pass) static HRESULT WINAPI VBScript_SetScriptSite(IActiveScript *iface, IActiveScriptSite *pass)
{ {
VBScript *This = impl_from_IActiveScript(iface); VBScript *This = impl_from_IActiveScript(iface);
FIXME("(%p)->(%p)\n", This, pass); LCID lcid;
HRESULT hres;
TRACE("(%p)->(%p)\n", This, pass);
if(!pass)
return E_POINTER;
if(This->site)
return E_UNEXPECTED;
if(InterlockedCompareExchange(&This->thread_id, GetCurrentThreadId(), 0))
return E_UNEXPECTED;
This->site = pass;
IActiveScriptSite_AddRef(This->site);
hres = IActiveScriptSite_GetLCID(This->site, &lcid);
if(hres == S_OK)
This->lcid = lcid;
return S_OK; return S_OK;
} }

View File

@ -24,6 +24,10 @@ struct VBScript {
IActiveScriptParse IActiveScriptParse_iface; IActiveScriptParse IActiveScriptParse_iface;
LONG ref; LONG ref;
IActiveScriptSite *site;
LONG thread_id;
LCID lcid;
}; };
HRESULT WINAPI VBScriptFactory_CreateInstance(IClassFactory*,IUnknown*,REFIID,void**); HRESULT WINAPI VBScriptFactory_CreateInstance(IClassFactory*,IUnknown*,REFIID,void**);