scrrun: Implement Reset() for folder collection.

oldstable
Nikolay Sivov 2014-01-03 16:35:31 +04:00 committed by Alexandre Julliard
parent 47e1ac9f98
commit 3cc34a5bf8
2 changed files with 23 additions and 2 deletions

View File

@ -42,6 +42,8 @@ struct enumdata {
struct
{
IFolderCollection *coll;
HANDLE find;
BSTR path;
} foldercoll;
} u;
};
@ -408,6 +410,8 @@ static ULONG WINAPI foldercoll_enumvariant_Release(IEnumVARIANT *iface)
if (!ref)
{
IFolderCollection_Release(This->data.u.foldercoll.coll);
SysFreeString(This->data.u.foldercoll.path);
FindClose(This->data.u.foldercoll.find);
heap_free(This);
}
@ -431,8 +435,13 @@ static HRESULT WINAPI foldercoll_enumvariant_Skip(IEnumVARIANT *iface, ULONG cel
static HRESULT WINAPI foldercoll_enumvariant_Reset(IEnumVARIANT *iface)
{
struct enumvariant *This = impl_from_IEnumVARIANT(iface);
FIXME("(%p): stub\n", This);
return E_NOTIMPL;
TRACE("(%p)\n", This);
FindClose(This->data.u.foldercoll.find);
This->data.u.foldercoll.find = NULL;
return S_OK;
}
static HRESULT WINAPI foldercoll_enumvariant_Clone(IEnumVARIANT *iface, IEnumVARIANT **pclone)
@ -463,6 +472,14 @@ static HRESULT create_foldercoll_enum(struct foldercollection *collection, IUnkn
This->IEnumVARIANT_iface.lpVtbl = &foldercollenumvariantvtbl;
This->ref = 1;
This->data.u.foldercoll.find = NULL;
This->data.u.foldercoll.path = SysAllocString(collection->path);
if (!This->data.u.foldercoll.path)
{
heap_free(This);
return E_OUTOFMEMORY;
}
This->data.u.foldercoll.coll = &collection->IFolderCollection_iface;
IFolderCollection_AddRef(This->data.u.foldercoll.coll);

View File

@ -866,6 +866,10 @@ if (hr == S_OK) {
ok(clone != enumvar, "got %p, %p\n", enumvar, clone);
IEnumVARIANT_Release(clone);
}
hr = IEnumVARIANT_Reset(enumvar);
ok(hr == S_OK, "got 0x%08x\n", hr);
IEnumVARIANT_Release(enumvar);
IUnknown_Release(unk);