From 03d19b5782e92fba2bea0f1ae5758b30be43666f Mon Sep 17 00:00:00 2001 From: Misha Koshelev Date: Fri, 27 Jul 2007 23:51:47 -0500 Subject: [PATCH] msi: Use SysAllocString/SysFreeString for BSTR members of EXCEPINFO structure. --- dlls/msi/automation.c | 4 ++-- dlls/msi/script.c | 6 ++++++ dlls/msi/tests/automation.c | 4 ++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/dlls/msi/automation.c b/dlls/msi/automation.c index 97084fc0229..fb8d4f578c0 100644 --- a/dlls/msi/automation.c +++ b/dlls/msi/automation.c @@ -426,8 +426,8 @@ static HRESULT WINAPI AutomationObject_Invoke( memset(pExcepInfo, 0, sizeof(EXCEPINFO)); pExcepInfo->wCode = 1000; - pExcepInfo->bstrSource = szExceptionSource; - pExcepInfo->bstrDescription = szExceptionDescription; + pExcepInfo->bstrSource = SysAllocString(szExceptionSource); + pExcepInfo->bstrDescription = SysAllocString(szExceptionDescription); hr = DISP_E_EXCEPTION; } } diff --git a/dlls/msi/script.c b/dlls/msi/script.c index cbce0ce3983..2f2a17e9aa2 100644 --- a/dlls/msi/script.c +++ b/dlls/msi/script.c @@ -336,9 +336,15 @@ static HRESULT WINAPI MsiActiveScriptSite_OnScriptError(IActiveScriptSite* iface TRACE("(%p/%p)->(%p)\n", This, iface, pscripterror); + memset(&exception, 0, sizeof(EXCEPINFO)); hr = IActiveScriptError_GetExceptionInfo(pscripterror, &exception); if (SUCCEEDED(hr)) + { ERR("script error: %s\n", debugstr_w(exception.bstrDescription)); + SysFreeString(exception.bstrSource); + SysFreeString(exception.bstrDescription); + SysFreeString(exception.bstrHelpFile); + } return S_OK; } diff --git a/dlls/msi/tests/automation.c b/dlls/msi/tests/automation.c index e7d184796ff..d2aac28f2c7 100644 --- a/dlls/msi/tests/automation.c +++ b/dlls/msi/tests/automation.c @@ -433,6 +433,10 @@ static WCHAR szSource[] = {'M','s','i',' ','A','P','I',' ','E','r','r','o','r',0 ok(excepinfo.bstrDescription != NULL, "Exception description was NULL\n"); \ if (excepinfo.bstrDescription) \ ok_w2("Exception description was \"%s\" but expected to be \"%s\"\n", excepinfo.bstrDescription, szDescription); \ +\ + SysFreeString(excepinfo.bstrSource); \ + SysFreeString(excepinfo.bstrDescription); \ + SysFreeString(excepinfo.bstrHelpFile); \ } static DISPID get_dispid( IDispatch *disp, const char *name )