On 01/14/2015 05:36 PM, Hans Leidekker wrote:
dlls/wbemdisp/locator.c | 156 +++++++++++++++++++++++++++++++++++++++-- dlls/wbemdisp/tests/wbemdisp.c | 69 ++++++++++++++++++ 2 files changed, 221 insertions(+), 4 deletions(-)
+static HRESULT EnumVARIANT_create( ISWbemObjectSet *objectset, IEnumVARIANT **obj ) +{
- struct enumvar *enumvar;
- if (!(enumvar = heap_alloc( sizeof(*enumvar) ))) return E_OUTOFMEMORY;
- enumvar->IEnumVARIANT_iface.lpVtbl = &enumvar_vtbl;
- enumvar->refs = 1;
- enumvar->objectset = objectset;
- ISWbemObjectSet_AddRef( enumvar->objectset );
That means that all IEnumVARIANT instances share same ISWbemObjectSet, so they all depend on its current state and Next/Skip on one IEnumVARIANT affects every instance. I don't think that's how IEnumVARIANT is supposed to behave.