diff --git a/dlls/scrrun/dictionary.c b/dlls/scrrun/dictionary.c index a33e1de0cbc..958d7fc98d8 100644 --- a/dlls/scrrun/dictionary.c +++ b/dlls/scrrun/dictionary.c @@ -41,6 +41,7 @@ typedef struct LONG ref; CompareMethod method; + LONG count; } dictionary; static inline dictionary *impl_from_IDictionary(IDictionary *iface) @@ -200,14 +201,13 @@ static HRESULT WINAPI dictionary_Add(IDictionary *iface, VARIANT *Key, VARIANT * return E_NOTIMPL; } -static HRESULT WINAPI dictionary_get_Count(IDictionary *iface, LONG *pCount) +static HRESULT WINAPI dictionary_get_Count(IDictionary *iface, LONG *count) { dictionary *This = impl_from_IDictionary(iface); - FIXME("(%p)->(%p)\n", This, pCount); - - *pCount = 0; + TRACE("(%p)->(%p)\n", This, count); + *count = This->count; return S_OK; } @@ -271,6 +271,9 @@ static HRESULT WINAPI dictionary_put_CompareMode(IDictionary *iface, CompareMeth TRACE("(%p)->(%d)\n", This, method); + if (This->count) + return CTL_E_ILLEGALFUNCTIONCALL; + This->method = method; return S_OK; } @@ -411,6 +414,7 @@ HRESULT WINAPI Dictionary_CreateInstance(IClassFactory *factory,IUnknown *outer, This->IDictionary_iface.lpVtbl = &dictionary_vtbl; This->ref = 1; This->method = BinaryCompare; + This->count = 0; *obj = &This->IDictionary_iface;