Module: wine Branch: master Commit: 778d4da2d9e9f899013ce52a2aa30ada263542ca URL: http://source.winehq.org/git/wine.git/?a=commit;h=778d4da2d9e9f899013ce52a2a...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Thu Feb 26 17:27:02 2015 +0300
scrrun: It's not allowed to change compare mode when dictionary is not empty.
---
dlls/scrrun/dictionary.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/dlls/scrrun/dictionary.c b/dlls/scrrun/dictionary.c index a33e1de..958d7fc 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;