From: Kevin Wasserman Date: Fri, 27 Jul 2012 01:08:14 +0000 (-0400) Subject: Handle missing autocomplete object gracefully X-Git-Tag: krb5-1.11-alpha1~229 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c6753181c2e59316c40fe0f6d1a55df542401c51;p=thirdparty%2Fkrb5.git Handle missing autocomplete object gracefully Don't crash if we can't create a CLSID_AutoComplete instance. Signed-off-by: Kevin Wasserman ticket: 7321 (new) queue: kfw target_version: 1.10.4 tags: pullup --- diff --git a/src/windows/leashdll/lshutil.cpp b/src/windows/leashdll/lshutil.cpp index 32dab585b5..37c0723f3b 100644 --- a/src/windows/leashdll/lshutil.cpp +++ b/src/windows/leashdll/lshutil.cpp @@ -440,7 +440,8 @@ protected: } // add the new one m_enumString->AddString(princStr); - m_acdd->ResetEnumerator(); + if (m_acdd != NULL) + m_acdd->ResetEnumerator(); m_princStr = princStr; } } @@ -524,25 +525,25 @@ protected: IAutoComplete *pac = NULL; hRes = CoCreateInstance(CLSID_AutoComplete, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pac)); - // @TODO: error handling + if (pac != NULL) { + pac->Init(m_hwnd, pEnumString, NULL, NULL); - pac->Init(m_hwnd, pEnumString, NULL, NULL); - - IAutoCompleteDropDown* pacdd = NULL; - hRes = pac->QueryInterface(IID_IAutoCompleteDropDown, (LPVOID*)&pacdd); - pac->Release(); + IAutoCompleteDropDown* pacdd = NULL; + hRes = pac->QueryInterface(IID_IAutoCompleteDropDown, (LPVOID*)&pacdd); + pac->Release(); // @TODO: auto-suggest; other advanced options? #if 0 - IAutoComplete2 *pac2; + IAutoComplete2 *pac2; - if (SUCCEEDED(pac->QueryInterface(IID_IAutoComplete2, (LPVOID*)&pac2))) - { - pac2->SetOptions(ACO_AUTOSUGGEST); - pac2->Release(); - } + if (SUCCEEDED(pac->QueryInterface(IID_IAutoComplete2, + (LPVOID*)&pac2))) { + pac2->SetOptions(ACO_AUTOSUGGEST); + pac2->Release(); + } #endif - m_acdd = pacdd; + m_acdd = pacdd; + } } void DestroyAutocomplete()