oleaut32: Fix ICreateTypeInfo2::SetVarHelpContext() to iterate properly.
This commit is contained in:
parent
a22b2c5686
commit
8305abdab7
|
@ -2874,6 +2874,55 @@ static void test_LoadTypeLib(void)
|
||||||
ok(hres == TYPE_E_CANTLOADLIBRARY, "LoadTypeLib returned: %08x, expected TYPE_E_CANTLOADLIBRARY\n", hres);
|
ok(hres == TYPE_E_CANTLOADLIBRARY, "LoadTypeLib returned: %08x, expected TYPE_E_CANTLOADLIBRARY\n", hres);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_SetVarHelpContext(void)
|
||||||
|
{
|
||||||
|
static OLECHAR nameW[] = {'n','a','m','e',0};
|
||||||
|
CHAR filenameA[MAX_PATH];
|
||||||
|
WCHAR filenameW[MAX_PATH];
|
||||||
|
ICreateTypeLib2 *ctl;
|
||||||
|
ICreateTypeInfo *cti;
|
||||||
|
VARDESC desc;
|
||||||
|
HRESULT hr;
|
||||||
|
VARIANT v;
|
||||||
|
|
||||||
|
GetTempFileNameA(".", "tlb", 0, filenameA);
|
||||||
|
MultiByteToWideChar(CP_ACP, 0, filenameA, -1, filenameW, MAX_PATH);
|
||||||
|
|
||||||
|
hr = CreateTypeLib2(SYS_WIN32, filenameW, &ctl);
|
||||||
|
ok(hr == S_OK, "got %08x\n", hr);
|
||||||
|
|
||||||
|
hr = ICreateTypeLib2_CreateTypeInfo(ctl, nameW, TKIND_ENUM, &cti);
|
||||||
|
ok(hr == S_OK, "got %08x\n", hr);
|
||||||
|
|
||||||
|
hr = ICreateTypeInfo_SetVarHelpContext(cti, 0, 0);
|
||||||
|
ok(hr == TYPE_E_ELEMENTNOTFOUND, "got %08x\n", hr);
|
||||||
|
|
||||||
|
memset(&desc, 0, sizeof(desc));
|
||||||
|
desc.elemdescVar.tdesc.vt = VT_INT;
|
||||||
|
desc.varkind = VAR_CONST;
|
||||||
|
|
||||||
|
V_VT(&v) = VT_INT;
|
||||||
|
V_INT(&v) = 1;
|
||||||
|
U(desc).lpvarValue = &v;
|
||||||
|
hr = ICreateTypeInfo2_AddVarDesc(cti, 0, &desc);
|
||||||
|
ok(hr == S_OK, "got %08x\n", hr);
|
||||||
|
|
||||||
|
hr = ICreateTypeInfo2_SetVarHelpContext(cti, 0, 0);
|
||||||
|
ok(hr == S_OK, "got %08x\n", hr);
|
||||||
|
|
||||||
|
/* another time */
|
||||||
|
hr = ICreateTypeInfo2_SetVarHelpContext(cti, 0, 1);
|
||||||
|
ok(hr == S_OK, "got %08x\n", hr);
|
||||||
|
|
||||||
|
/* wrong index now */
|
||||||
|
hr = ICreateTypeInfo2_SetVarHelpContext(cti, 1, 0);
|
||||||
|
ok(hr == TYPE_E_ELEMENTNOTFOUND, "got %08x\n", hr);
|
||||||
|
|
||||||
|
ICreateTypeInfo_Release(cti);
|
||||||
|
ICreateTypeLib2_Release(ctl);
|
||||||
|
DeleteFileA(filenameA);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(typelib)
|
START_TEST(typelib)
|
||||||
{
|
{
|
||||||
const char *filename;
|
const char *filename;
|
||||||
|
@ -2890,6 +2939,7 @@ START_TEST(typelib)
|
||||||
test_QueryPathOfRegTypeLib(64);
|
test_QueryPathOfRegTypeLib(64);
|
||||||
test_inheritance();
|
test_inheritance();
|
||||||
test_CreateTypeLib();
|
test_CreateTypeLib();
|
||||||
|
test_SetVarHelpContext();
|
||||||
|
|
||||||
if ((filename = create_test_typelib(2)))
|
if ((filename = create_test_typelib(2)))
|
||||||
{
|
{
|
||||||
|
|
|
@ -2553,7 +2553,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnSetVarHelpContext(
|
||||||
if ((This->typeinfo->cElement >> 16) <= index)
|
if ((This->typeinfo->cElement >> 16) <= index)
|
||||||
return TYPE_E_ELEMENTNOTFOUND;
|
return TYPE_E_ELEMENTNOTFOUND;
|
||||||
|
|
||||||
for (iter = This->typedata->next->next; iter != This->typedata; iter = iter->next)
|
for (iter = This->typedata->next->next; iter != This->typedata->next; iter = iter->next)
|
||||||
if (iter->type == CyclicListVar)
|
if (iter->type == CyclicListVar)
|
||||||
{
|
{
|
||||||
if (index-- == 0)
|
if (index-- == 0)
|
||||||
|
|
Loading…
Reference in New Issue