Gabriel Ivăncescu : msscript.ocx: Implement IScriptError::get_Description.
Alexandre Julliard
julliard at winehq.org
Tue Aug 25 16:16:56 CDT 2020
Module: wine
Branch: master
Commit: 24d9f52fea1372d99205a32f6755c698f64844de
URL: https://source.winehq.org/git/wine.git/?a=commit;h=24d9f52fea1372d99205a32f6755c698f64844de
Author: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Date: Mon Aug 24 17:56:15 2020 +0300
msscript.ocx: Implement IScriptError::get_Description.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/msscript.ocx/msscript.c | 10 ++++++++--
dlls/msscript.ocx/tests/msscript.c | 22 ++++++++++++++++++----
2 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/dlls/msscript.ocx/msscript.c b/dlls/msscript.ocx/msscript.c
index 30125af7f3..288056bbdb 100644
--- a/dlls/msscript.ocx/msscript.c
+++ b/dlls/msscript.ocx/msscript.c
@@ -126,6 +126,7 @@ typedef struct {
HRESULT number;
BSTR source;
+ BSTR desc;
BOOLEAN info_filled;
} ScriptError;
@@ -2132,6 +2133,7 @@ static void fill_error_info(ScriptError *error)
error->number = info.scode;
error->source = info.bstrSource;
+ error->desc = info.bstrDescription;
}
static HRESULT WINAPI ScriptError_QueryInterface(IScriptError *iface, REFIID riid, void **ppv)
@@ -2267,9 +2269,11 @@ static HRESULT WINAPI ScriptError_get_Description(IScriptError *iface, BSTR *pbs
{
ScriptError *This = impl_from_IScriptError(iface);
- FIXME("(%p)->(%p)\n", This, pbstrDescription);
+ TRACE("(%p)->(%p)\n", This, pbstrDescription);
- return E_NOTIMPL;
+ fill_error_info(This);
+ *pbstrDescription = SysAllocString(This->desc);
+ return S_OK;
}
static HRESULT WINAPI ScriptError_get_HelpFile(IScriptError *iface, BSTR *pbstrHelpFile)
@@ -2329,9 +2333,11 @@ static HRESULT WINAPI ScriptError_Clear(IScriptError *iface)
This->object = NULL;
}
SysFreeString(This->source);
+ SysFreeString(This->desc);
This->number = 0;
This->source = NULL;
+ This->desc = NULL;
This->info_filled = FALSE;
return S_OK;
diff --git a/dlls/msscript.ocx/tests/msscript.c b/dlls/msscript.ocx/tests/msscript.c
index d42ce9ed78..46463c6ea4 100644
--- a/dlls/msscript.ocx/tests/msscript.c
+++ b/dlls/msscript.ocx/tests/msscript.c
@@ -3339,6 +3339,9 @@ static void test_IScriptControl_get_Error(void)
hr = IScriptError_get_Source(error, &str);
ok(hr == S_OK, "IScriptError_get_Source failed: 0x%08x.\n", hr);
ok(str == NULL, "Error Source is not (null), got %s.\n", wine_dbgstr_w(str));
+ hr = IScriptError_get_Description(error, &str);
+ ok(hr == S_OK, "IScriptError_get_Description failed: 0x%08x.\n", hr);
+ ok(str == NULL, "Error Description is not (null), got %s.\n", wine_dbgstr_w(str));
str = SysAllocString(L"jscript");
hr = IScriptControl_put_Language(sc, str);
@@ -3361,6 +3364,10 @@ static void test_IScriptControl_get_Error(void)
ok(hr == S_OK, "IScriptError_get_Source failed: 0x%08x.\n", hr);
ok(str != NULL, "Error Source is (null).\n");
SysFreeString(str);
+ hr = IScriptError_get_Description(error, &str);
+ ok(hr == S_OK, "IScriptError_get_Description failed: 0x%08x.\n", hr);
+ ok(str != NULL, "Error Description is (null).\n");
+ SysFreeString(str);
hr = IScriptError_Clear(error);
ok(hr == S_OK, "IScriptError_Clear failed: 0x%08x.\n", hr);
@@ -3371,6 +3378,9 @@ static void test_IScriptControl_get_Error(void)
hr = IScriptError_get_Source(error, &str);
ok(hr == S_OK, "IScriptError_get_Source failed: 0x%08x.\n", hr);
ok(str == NULL, "Error Source is not (null), got %s.\n", wine_dbgstr_w(str));
+ hr = IScriptError_get_Description(error, &str);
+ ok(hr == S_OK, "IScriptError_get_Description failed: 0x%08x.\n", hr);
+ ok(str == NULL, "Error Description is not (null), got %s.\n", wine_dbgstr_w(str));
hr = IScriptControl_get_Error(sc, &error2);
ok(hr == S_OK, "IScriptControl_get_Error failed: 0x%08x.\n", hr);
@@ -3424,6 +3434,9 @@ static void test_IScriptControl_get_Error(void)
hr = IScriptError_get_Source(error, &str);
ok(hr == S_OK, "IScriptError_get_Source failed: 0x%08x.\n", hr);
ok(str == NULL, "Error Source is not (null), got %s.\n", wine_dbgstr_w(str));
+ hr = IScriptError_get_Description(error, &str);
+ ok(hr == S_OK, "IScriptError_get_Description failed: 0x%08x.\n", hr);
+ ok(str == NULL, "Error Description is not (null), got %s.\n", wine_dbgstr_w(str));
SET_EXPECT(GetSourceLineText);
hr = IScriptError_get_Text(error, &str);
@@ -3456,8 +3469,9 @@ static void test_IScriptControl_get_Error(void)
ok(!lstrcmpW(str, L"foobar"), "Error Source is wrong, got %s.\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IScriptError_get_Description(error, &str);
- todo_wine ok(hr == S_OK, "IScriptError_get_Description failed: 0x%08x.\n", hr);
- if (SUCCEEDED(hr)) SysFreeString(str);
+ ok(hr == S_OK, "IScriptError_get_Description failed: 0x%08x.\n", hr);
+ ok(!lstrcmpW(str, L"barfoo"), "Error Description is wrong, got %s.\n", wine_dbgstr_w(str));
+ SysFreeString(str);
SET_EXPECT(GetSourceLineText);
hr = IScriptError_get_Text(error, &str);
@@ -3490,8 +3504,8 @@ static void test_IScriptControl_get_Error(void)
ok(!lstrcmpW(str, L"source"), "Error Source is wrong, got %s.\n", wine_dbgstr_w(str));
SysFreeString(str);
hr = IScriptError_get_Description(error, &str);
- todo_wine ok(hr == S_OK, "IScriptError_get_Description failed: 0x%08x.\n", hr);
- if (SUCCEEDED(hr)) SysFreeString(str);
+ ok(hr == S_OK, "IScriptError_get_Description failed: 0x%08x.\n", hr);
+ ok(str == NULL, "Error Description is not (null), got %s.\n", wine_dbgstr_w(str));
SET_EXPECT(GetSourceLineText);
hr = IScriptError_get_Text(error, &str);
More information about the wine-cvs
mailing list