vbscript: Added IActiveScript::SetScriptSite implementation.
diff --git a/dlls/vbscript/vbscript.c b/dlls/vbscript/vbscript.c
index f0da4ed..74cc745 100644
--- a/dlls/vbscript/vbscript.c
+++ b/dlls/vbscript/vbscript.c
@@ -89,8 +89,11 @@
TRACE("(%p) ref=%d\n", iface, ref);
- if(!ref)
+ if(!ref) {
+ if(This->site)
+ IActiveScriptSite_Release(This->site);
heap_free(This);
+ }
return ref;
}
@@ -98,7 +101,27 @@
static HRESULT WINAPI VBScript_SetScriptSite(IActiveScript *iface, IActiveScriptSite *pass)
{
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;
}
diff --git a/dlls/vbscript/vbscript.h b/dlls/vbscript/vbscript.h
index cd97e09..cec9a04 100644
--- a/dlls/vbscript/vbscript.h
+++ b/dlls/vbscript/vbscript.h
@@ -24,6 +24,10 @@
IActiveScriptParse IActiveScriptParse_iface;
LONG ref;
+
+ IActiveScriptSite *site;
+ LONG thread_id;
+ LCID lcid;
};
HRESULT WINAPI VBScriptFactory_CreateInstance(IClassFactory*,IUnknown*,REFIID,void**);