Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com ---
This function, and IsName, change the input name parameter's case to match that of the one found.
dlls/vbscript/vbdisp.c | 50 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-)
diff --git a/dlls/vbscript/vbdisp.c b/dlls/vbscript/vbdisp.c index ef40ee9..bae5f42 100644 --- a/dlls/vbscript/vbdisp.c +++ b/dlls/vbscript/vbdisp.c @@ -1381,11 +1381,57 @@ static HRESULT WINAPI ScriptTypeLib_FindName(ITypeLib *iface, LPOLESTR szNameBuf ITypeInfo **ppTInfo, MEMBERID *rgMemId, USHORT *pcFound) { ScriptTypeInfo *This = ScriptTypeInfo_from_typelib_ITypeLib(iface); + UINT cnt, i;
- FIXME("(%p)->(%s %08x %p %p %p)\n", This, debugstr_w(szNameBuf), lHashVal, + TRACE("(%p)->(%s %08x %p %p %p)\n", This, debugstr_w(szNameBuf), lHashVal, ppTInfo, rgMemId, pcFound);
- return E_NOTIMPL; + if (!szNameBuf || !ppTInfo || !rgMemId || !pcFound) + return E_INVALIDARG; + + cnt = *pcFound; + *pcFound = 0; + if (!cnt) return S_OK; + + if (!wcsicmp(szNameBuf, L"VBScriptTypeInfo")) + { + /* Make sure to capitalize the name as it is found */ + lstrcpyW(szNameBuf, L"VBScriptTypeInfo"); + *rgMemId++ = MEMBERID_NIL; + *ppTInfo++ = &This->ITypeInfo_iface; + ITypeInfo_AddRef(&This->ITypeInfo_iface); + (*pcFound)++; + if (cnt == 1) + return S_OK; + } + + for (i = 0; i < This->num_funcs; i++) + { + if (!wcsicmp(szNameBuf, This->funcs[i].func->name)) + { + lstrcpyW(szNameBuf, This->funcs[i].func->name); + *rgMemId++ = This->funcs[i].memid; + *ppTInfo++ = &This->ITypeInfo_iface; + ITypeInfo_AddRef(&This->ITypeInfo_iface); + (*pcFound)++; + return S_OK; + } + } + + for (i = 0; i < This->num_vars; i++) + { + if (!wcsicmp(szNameBuf, This->disp->global_vars[i]->name)) + { + lstrcpyW(szNameBuf, This->disp->global_vars[i]->name); + *rgMemId++ = i + 1; + *ppTInfo++ = &This->ITypeInfo_iface; + ITypeInfo_AddRef(&This->ITypeInfo_iface); + (*pcFound)++; + return S_OK; + } + } + + return S_OK; }
static void WINAPI ScriptTypeLib_ReleaseTLibAttr(ITypeLib *iface, TLIBATTR *pTLibAttr)