Module: wine Branch: master Commit: 03d19b5782e92fba2bea0f1ae5758b30be43666f URL: http://source.winehq.org/git/wine.git/?a=commit;h=03d19b5782e92fba2bea0f1ae5...
Author: Misha Koshelev mk144210@bcm.edu Date: Fri Jul 27 23:51:47 2007 -0500
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 97084fc..fb8d4f5 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 cbce0ce..2f2a17e 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 e7d1847..d2aac28 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 )