winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
February 2020
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
874 discussions
Start a n
N
ew thread
Gabriel Ivăncescu : vbscript: Lookup the named item in compile_script.
by Alexandre Julliard
03 Feb '20
03 Feb '20
Module: wine Branch: master Commit: 729c9eab58a34c0251cf4e4b5f5fb1dd1b42a128 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=729c9eab58a34c0251cf4e4b…
Author: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> Date: Fri Jan 31 15:28:59 2020 +0200 vbscript: Lookup the named item in compile_script. Signed-off-by: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/vbscript/compile.c | 23 ++++++++++++++++++----- dlls/vbscript/vbscript.c | 19 ++++--------------- dlls/vbscript/vbscript.h | 4 ++-- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/dlls/vbscript/compile.c b/dlls/vbscript/compile.c index eac048daa1..9888109e79 100644 --- a/dlls/vbscript/compile.c +++ b/dlls/vbscript/compile.c @@ -1921,16 +1921,25 @@ static void release_compiler(compile_ctx_t *ctx) release_vbscode(ctx->code); } -HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *delimiter, DWORD_PTR cookie, - unsigned start_line, DWORD flags, vbscode_t **ret) +HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *item_name, const WCHAR *delimiter, + DWORD_PTR cookie, unsigned start_line, DWORD flags, vbscode_t **ret) { function_decl_t *func_decl; + named_item_t *item = NULL; class_decl_t *class_decl; function_t *new_func; compile_ctx_t ctx; vbscode_t *code; HRESULT hres; + if(item_name) { + item = lookup_named_item(script, item_name, 0); + if(!item) { + WARN("Unknown context %s\n", debugstr_w(item_name)); + return E_INVALIDARG; + } + } + memset(&ctx, 0, sizeof(ctx)); code = ctx.code = alloc_vbscode(&ctx, src, cookie, start_line); if(!ctx.code) @@ -1993,19 +2002,23 @@ HRESULT compile_script(script_ctx_t *script, const WCHAR *src, const WCHAR *deli ctx.code = NULL; release_compiler(&ctx); + if(item && item->disp) + IDispatch_AddRef(code->context = item->disp); + list_add_tail(&script->code_list, &code->entry); *ret = code; return S_OK; } -HRESULT compile_procedure(script_ctx_t *script, const WCHAR *src, const WCHAR *delimiter, DWORD_PTR cookie, - unsigned start_line, DWORD flags, class_desc_t **ret) +HRESULT compile_procedure(script_ctx_t *script, const WCHAR *src, const WCHAR *item_name, const WCHAR *delimiter, + DWORD_PTR cookie, unsigned start_line, DWORD flags, class_desc_t **ret) { class_desc_t *desc; vbscode_t *code; HRESULT hres; - hres = compile_script(script, src, delimiter, cookie, start_line, flags & ~SCRIPTTEXT_ISPERSISTENT, &code); + hres = compile_script(script, src, item_name, delimiter, cookie, start_line, + flags & ~SCRIPTTEXT_ISPERSISTENT, &code); if(FAILED(hres)) return hres; diff --git a/dlls/vbscript/vbscript.c b/dlls/vbscript/vbscript.c index 0bbff30bf6..b597389a9a 100644 --- a/dlls/vbscript/vbscript.c +++ b/dlls/vbscript/vbscript.c @@ -870,7 +870,6 @@ static HRESULT WINAPI VBScriptParse_ParseScriptText(IActiveScriptParse *iface, DWORD dwFlags, VARIANT *pvarResult, EXCEPINFO *pexcepinfo) { VBScript *This = impl_from_IActiveScriptParse(iface); - named_item_t *item = NULL; vbscode_t *code; HRESULT hres; @@ -881,21 +880,11 @@ static HRESULT WINAPI VBScriptParse_ParseScriptText(IActiveScriptParse *iface, if(This->thread_id != GetCurrentThreadId() || This->state == SCRIPTSTATE_CLOSED) return E_UNEXPECTED; - if(pstrItemName) { - item = lookup_named_item(This->ctx, pstrItemName, 0); - if(!item) { - WARN("Unknown context %s\n", debugstr_w(pstrItemName)); - return E_INVALIDARG; - } - } - - hres = compile_script(This->ctx, pstrCode, pstrDelimiter, dwSourceContextCookie, ulStartingLine, dwFlags, &code); + hres = compile_script(This->ctx, pstrCode, pstrItemName, pstrDelimiter, dwSourceContextCookie, + ulStartingLine, dwFlags, &code); if(FAILED(hres)) return hres; - if(item && item->disp) - IDispatch_AddRef(code->context = item->disp); - if(!(dwFlags & SCRIPTTEXT_ISEXPRESSION) && !is_started(This)) { code->pending_exec = TRUE; return S_OK; @@ -953,8 +942,8 @@ static HRESULT WINAPI VBScriptParseProcedure_ParseProcedureText(IActiveScriptPar if(This->thread_id != GetCurrentThreadId() || This->state == SCRIPTSTATE_CLOSED) return E_UNEXPECTED; - hres = compile_procedure(This->ctx, pstrCode, pstrDelimiter, dwSourceContextCookie, ulStartingLineNumber, - dwFlags, &desc); + hres = compile_procedure(This->ctx, pstrCode, pstrItemName, pstrDelimiter, dwSourceContextCookie, + ulStartingLineNumber, dwFlags, &desc); if(FAILED(hres)) return hres; diff --git a/dlls/vbscript/vbscript.h b/dlls/vbscript/vbscript.h index a3f32fdf0b..f37b0ce0ee 100644 --- a/dlls/vbscript/vbscript.h +++ b/dlls/vbscript/vbscript.h @@ -368,8 +368,8 @@ static inline void grab_vbscode(vbscode_t *code) } void release_vbscode(vbscode_t*) DECLSPEC_HIDDEN; -HRESULT compile_script(script_ctx_t*,const WCHAR*,const WCHAR*,DWORD_PTR,unsigned,DWORD,vbscode_t**) DECLSPEC_HIDDEN; -HRESULT compile_procedure(script_ctx_t*,const WCHAR*,const WCHAR*,DWORD_PTR,unsigned,DWORD,class_desc_t**) DECLSPEC_HIDDEN; +HRESULT compile_script(script_ctx_t*,const WCHAR*,const WCHAR*,const WCHAR*,DWORD_PTR,unsigned,DWORD,vbscode_t**) DECLSPEC_HIDDEN; +HRESULT compile_procedure(script_ctx_t*,const WCHAR*,const WCHAR*,const WCHAR*,DWORD_PTR,unsigned,DWORD,class_desc_t**) DECLSPEC_HIDDEN; HRESULT exec_script(script_ctx_t*,BOOL,function_t*,vbdisp_t*,DISPPARAMS*,VARIANT*) DECLSPEC_HIDDEN; void release_dynamic_var(dynamic_var_t*) DECLSPEC_HIDDEN; named_item_t *lookup_named_item(script_ctx_t*,const WCHAR*,unsigned) DECLSPEC_HIDDEN;
1
0
0
0
Gabriel Ivăncescu : vbscript: Return the named item itself from lookup_named_item.
by Alexandre Julliard
03 Feb '20
03 Feb '20
Module: wine Branch: master Commit: 07f902b0800e3388885109951f1fb6b0017f2a9b URL:
https://source.winehq.org/git/wine.git/?a=commit;h=07f902b0800e338888510995…
Author: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> Date: Fri Jan 31 15:28:58 2020 +0200 vbscript: Return the named item itself from lookup_named_item. Signed-off-by: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/vbscript/interp.c | 7 +++---- dlls/vbscript/vbscript.c | 16 ++++++++-------- dlls/vbscript/vbscript.h | 2 +- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c index 906545cf4a..b328674b60 100644 --- a/dlls/vbscript/interp.c +++ b/dlls/vbscript/interp.c @@ -114,7 +114,6 @@ static HRESULT lookup_identifier(exec_ctx_t *ctx, BSTR name, vbdisp_invoke_type_ { ScriptDisp *script_obj = ctx->script->script_obj; named_item_t *item; - IDispatch *disp; unsigned i; DISPID id; HRESULT hres; @@ -196,10 +195,10 @@ static HRESULT lookup_identifier(exec_ctx_t *ctx, BSTR name, vbdisp_invoke_type_ return S_OK; } - disp = lookup_named_item(ctx->script, name, SCRIPTITEM_ISVISIBLE); - if(disp) { + item = lookup_named_item(ctx->script, name, SCRIPTITEM_ISVISIBLE); + if(item && item->disp) { ref->type = REF_OBJ; - ref->u.obj = disp; + ref->u.obj = item->disp; return S_OK; } diff --git a/dlls/vbscript/vbscript.c b/dlls/vbscript/vbscript.c index 2b691af583..0bbff30bf6 100644 --- a/dlls/vbscript/vbscript.c +++ b/dlls/vbscript/vbscript.c @@ -189,7 +189,7 @@ static void exec_queued_code(script_ctx_t *ctx) } } -IDispatch *lookup_named_item(script_ctx_t *ctx, const WCHAR *name, unsigned flags) +named_item_t *lookup_named_item(script_ctx_t *ctx, const WCHAR *name, unsigned flags) { named_item_t *item; HRESULT hres; @@ -214,7 +214,7 @@ IDispatch *lookup_named_item(script_ctx_t *ctx, const WCHAR *name, unsigned flag } } - return item->disp; + return item; } } @@ -870,7 +870,7 @@ static HRESULT WINAPI VBScriptParse_ParseScriptText(IActiveScriptParse *iface, DWORD dwFlags, VARIANT *pvarResult, EXCEPINFO *pexcepinfo) { VBScript *This = impl_from_IActiveScriptParse(iface); - IDispatch *context = NULL; + named_item_t *item = NULL; vbscode_t *code; HRESULT hres; @@ -882,9 +882,9 @@ static HRESULT WINAPI VBScriptParse_ParseScriptText(IActiveScriptParse *iface, return E_UNEXPECTED; if(pstrItemName) { - context = lookup_named_item(This->ctx, pstrItemName, 0); - if(!context) { - WARN("Inknown context %s\n", debugstr_w(pstrItemName)); + item = lookup_named_item(This->ctx, pstrItemName, 0); + if(!item) { + WARN("Unknown context %s\n", debugstr_w(pstrItemName)); return E_INVALIDARG; } } @@ -893,8 +893,8 @@ static HRESULT WINAPI VBScriptParse_ParseScriptText(IActiveScriptParse *iface, if(FAILED(hres)) return hres; - if(context) - IDispatch_AddRef(code->context = context); + if(item && item->disp) + IDispatch_AddRef(code->context = item->disp); if(!(dwFlags & SCRIPTTEXT_ISEXPRESSION) && !is_started(This)) { code->pending_exec = TRUE; diff --git a/dlls/vbscript/vbscript.h b/dlls/vbscript/vbscript.h index 33ecb45bf4..a3f32fdf0b 100644 --- a/dlls/vbscript/vbscript.h +++ b/dlls/vbscript/vbscript.h @@ -372,7 +372,7 @@ HRESULT compile_script(script_ctx_t*,const WCHAR*,const WCHAR*,DWORD_PTR,unsigne HRESULT compile_procedure(script_ctx_t*,const WCHAR*,const WCHAR*,DWORD_PTR,unsigned,DWORD,class_desc_t**) DECLSPEC_HIDDEN; HRESULT exec_script(script_ctx_t*,BOOL,function_t*,vbdisp_t*,DISPPARAMS*,VARIANT*) DECLSPEC_HIDDEN; void release_dynamic_var(dynamic_var_t*) DECLSPEC_HIDDEN; -IDispatch *lookup_named_item(script_ctx_t*,const WCHAR*,unsigned) DECLSPEC_HIDDEN; +named_item_t *lookup_named_item(script_ctx_t*,const WCHAR*,unsigned) DECLSPEC_HIDDEN; void clear_ei(EXCEPINFO*) DECLSPEC_HIDDEN; HRESULT report_script_error(script_ctx_t*,const vbscode_t*,unsigned) DECLSPEC_HIDDEN; void detach_global_objects(script_ctx_t*) DECLSPEC_HIDDEN;
1
0
0
0
Jacek Caban : jscript: Add GetSourcePosition implementation.
by Alexandre Julliard
03 Feb '20
03 Feb '20
Module: wine Branch: master Commit: 348eef2e02eb3d9fcbbf6a0eb2aa473c816c08c9 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=348eef2e02eb3d9fcbbf6a0e…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Feb 3 14:48:07 2020 +0100 jscript: Add GetSourcePosition implementation. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/jscript/jscript.c | 25 +++++++++++++++++++++---- dlls/jscript/tests/run.c | 3 --- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/dlls/jscript/jscript.c b/dlls/jscript/jscript.c index 8f79ea4bd4..860fb01cf5 100644 --- a/dlls/jscript/jscript.c +++ b/dlls/jscript/jscript.c @@ -178,15 +178,32 @@ static HRESULT WINAPI JScriptError_GetExceptionInfo(IActiveScriptError *iface, E static HRESULT WINAPI JScriptError_GetSourcePosition(IActiveScriptError *iface, DWORD *source_context, ULONG *line, LONG *character) { JScriptError *This = impl_from_IActiveScriptError(iface); + bytecode_t *code = This->ei.code; + const WCHAR *nl, *p; + unsigned l; - FIXME("(%p)->(%p %p %p)\n", This, source_context, line, character); + TRACE("(%p)->(%p %p %p)\n", This, source_context, line, character); + + if(!This->ei.code) { + FIXME("unknown position\n"); + return E_FAIL; + } if(source_context) - *source_context = 0; + *source_context = This->ei.code->source_context; + if(!line && !character) + return S_OK; + + l = code->start_line; + for(nl = p = code->source; p < code->source + This->ei.loc; p++) { + if(*p != '\n') continue; + l++; + nl = p + 1; + } if(line) - *line = 0; + *line = l; if(character) - *character = 0; + *character = code->source + This->ei.loc - nl; return S_OK; } diff --git a/dlls/jscript/tests/run.c b/dlls/jscript/tests/run.c index 1d11e00f44..6e2250882d 100644 --- a/dlls/jscript/tests/run.c +++ b/dlls/jscript/tests/run.c @@ -2285,19 +2285,16 @@ static void test_error_reports(void) source_context = 0xdeadbeef; hres = IActiveScriptError_GetSourcePosition(script_error, &source_context, NULL, NULL); ok(hres == S_OK, "GetSourcePosition failed0x%08x\n", hres); - todo_wine ok(source_context == 10, "source_context = %x\n", source_context); line_number = 0xdeadbeef; hres = IActiveScriptError_GetSourcePosition(script_error, NULL, &line_number, NULL); ok(hres == S_OK, "GetSourcePosition failed%08x\n", hres); - todo_wine_if(tests[i].line) ok(line_number == tests[i].line, "[%u] line = %u expected %u\n", i, line_number, tests[i].line); character = 0xdeadbeef; hres = IActiveScriptError_GetSourcePosition(script_error, NULL, NULL, &character); ok(hres == S_OK, "GetSourcePosition failed: %08x\n", hres); - todo_wine_if(tests[i].character) ok(character == tests[i].character, "[%u] character = %u expected %u\n", i, character, tests[i].character); hres = IActiveScriptError_GetSourceLineText(script_error, NULL);
1
0
0
0
Jacek Caban : jscript: Return error source and description from GetExceptionInfo.
by Alexandre Julliard
03 Feb '20
03 Feb '20
Module: wine Branch: master Commit: ed3e5404dd0c9bc6ed7747e23a1b818b4d60e503 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=ed3e5404dd0c9bc6ed7747e2…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Feb 3 14:47:59 2020 +0100 jscript: Return error source and description from GetExceptionInfo. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/jscript/jscript.c | 4 ++++ dlls/jscript/tests/run.c | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dlls/jscript/jscript.c b/dlls/jscript/jscript.c index 0e8d3ec2e9..8f79ea4bd4 100644 --- a/dlls/jscript/jscript.c +++ b/dlls/jscript/jscript.c @@ -168,6 +168,10 @@ static HRESULT WINAPI JScriptError_GetExceptionInfo(IActiveScriptError *iface, E memset(excepinfo, 0, sizeof(*excepinfo)); excepinfo->scode = This->ei.error; + if(This->ei.source) + jsstr_to_bstr(This->ei.source, &excepinfo->bstrSource); + if(This->ei.message) + jsstr_to_bstr(This->ei.message, &excepinfo->bstrDescription); return S_OK; } diff --git a/dlls/jscript/tests/run.c b/dlls/jscript/tests/run.c index 8b3cc8a1d2..1d11e00f44 100644 --- a/dlls/jscript/tests/run.c +++ b/dlls/jscript/tests/run.c @@ -2345,13 +2345,12 @@ static void test_error_reports(void) if (is_lang_english()) { if(tests[i].error_source) - todo_wine ok(ei.bstrSource && !lstrcmpW(ei.bstrSource, tests[i].error_source), "[%u] bstrSource = %s expected %s\n", i, wine_dbgstr_w(ei.bstrSource), wine_dbgstr_w(tests[i].error_source)); else ok(!ei.bstrSource, "[%u] bstrSource = %s expected NULL\n", i, wine_dbgstr_w(ei.bstrSource)); if(tests[i].description) - todo_wine + todo_wine_if(tests[i].todo_flags & ERROR_TODO_DESCRIPTION) ok(ei.bstrDescription && !lstrcmpW(ei.bstrDescription, tests[i].description), "[%u] bstrDescription = %s expected %s\n", i, wine_dbgstr_w(ei.bstrDescription), wine_dbgstr_w(tests[i].description)); else
1
0
0
0
Jacek Caban : jscript: Propagate compiler error location.
by Alexandre Julliard
03 Feb '20
03 Feb '20
Module: wine Branch: master Commit: ed22d71fd2781d91432993027c65274f6a2de320 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=ed22d71fd2781d9143299302…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Feb 3 14:47:46 2020 +0100 jscript: Propagate compiler error location. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/jscript/compile.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dlls/jscript/compile.c b/dlls/jscript/compile.c index 1bf5f225de..2be5f24fae 100644 --- a/dlls/jscript/compile.c +++ b/dlls/jscript/compile.c @@ -2519,8 +2519,11 @@ HRESULT compile_script(script_ctx_t *ctx, const WCHAR *code, UINT64 source_conte heap_pool_free(&compiler.heap); parser_release(compiler.parser); if(FAILED(hres)) { + if(hres != DISP_E_EXCEPTION) + throw_error(ctx, hres, NULL); + set_error_location(ctx->ei, compiler.code, compiler.loc, IDS_COMPILATION_ERROR); release_bytecode(compiler.code); - return hres; + return DISP_E_EXCEPTION; } *ret = compiler.code;
1
0
0
0
Jacek Caban : jscript: Propagate parser error location.
by Alexandre Julliard
03 Feb '20
03 Feb '20
Module: wine Branch: master Commit: 27e4881c686ad44c0fabb5928bde33d31d3fa2c4 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=27e4881c686ad44c0fabb592…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Feb 3 14:47:39 2020 +0100 jscript: Propagate parser error location. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/jscript/compile.c | 2 +- dlls/jscript/parser.h | 4 +++- dlls/jscript/parser.y | 29 ++++++++++++++++++----------- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/dlls/jscript/compile.c b/dlls/jscript/compile.c index f1e005a6d3..1bf5f225de 100644 --- a/dlls/jscript/compile.c +++ b/dlls/jscript/compile.c @@ -2508,7 +2508,7 @@ HRESULT compile_script(script_ctx_t *ctx, const WCHAR *code, UINT64 source_conte } } - hres = script_parse(ctx, &compiler, compiler.code->source, delimiter, from_eval, &compiler.parser); + hres = script_parse(ctx, &compiler, compiler.code, delimiter, from_eval, &compiler.parser); if(FAILED(hres)) { release_bytecode(compiler.code); return hres; diff --git a/dlls/jscript/parser.h b/dlls/jscript/parser.h index 1870e6ae50..3fa699c86d 100644 --- a/dlls/jscript/parser.h +++ b/dlls/jscript/parser.h @@ -19,6 +19,7 @@ typedef struct _source_elements_t source_elements_t; typedef struct _expression_t expression_t; typedef struct _statement_t statement_t; +struct _bytecode_t; typedef struct { BOOL is_num; @@ -41,6 +42,7 @@ typedef struct _parser_ctx_t { BOOL is_html; BOOL lexer_error; HRESULT hres; + unsigned error_loc; ccval_t ccval; unsigned cc_if_depth; @@ -48,7 +50,7 @@ typedef struct _parser_ctx_t { heap_pool_t heap; } parser_ctx_t; -HRESULT script_parse(script_ctx_t*,struct _compiler_ctx_t*,const WCHAR*,const WCHAR*,BOOL,parser_ctx_t**) DECLSPEC_HIDDEN; +HRESULT script_parse(script_ctx_t*,struct _compiler_ctx_t*,struct _bytecode_t*,const WCHAR*,BOOL,parser_ctx_t**) DECLSPEC_HIDDEN; void parser_release(parser_ctx_t*) DECLSPEC_HIDDEN; int parser_lex(void*,unsigned*,parser_ctx_t*) DECLSPEC_HIDDEN; diff --git a/dlls/jscript/parser.y b/dlls/jscript/parser.y index 3eebebbcaa..5a71a84ffa 100644 --- a/dlls/jscript/parser.y +++ b/dlls/jscript/parser.y @@ -27,7 +27,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(jscript); static int parser_error(unsigned*,parser_ctx_t*,const char*); -static void set_error(parser_ctx_t*,UINT); +static void set_error(parser_ctx_t*,unsigned,HRESULT); static BOOL explicit_error(parser_ctx_t*,void*,WCHAR); static BOOL allow_auto_semicolon(parser_ctx_t*); @@ -495,7 +495,7 @@ Expression_opt Expression_err : Expression { $$ = $1; } - | error { set_error(ctx, JS_E_SYNTAX); YYABORT; } + | error { set_error(ctx, @$, JS_E_SYNTAX); YYABORT; } /* ECMA-262 3rd Edition 11.14 */ Expression @@ -881,19 +881,19 @@ BooleanLiteral semicolon_opt : ';' - | error { if(!allow_auto_semicolon(ctx)) {YYABORT;} else { ctx->hres = S_OK; } } + | error { if(!allow_auto_semicolon(ctx)) {YYABORT;} else { ctx->hres = S_OK; ctx->error_loc = -1; } } left_bracket : '(' - | error { set_error(ctx, JS_E_MISSING_LBRACKET); YYABORT; } + | error { set_error(ctx, @$, JS_E_MISSING_LBRACKET); YYABORT; } right_bracket : ')' - | error { set_error(ctx, JS_E_MISSING_RBRACKET); YYABORT; } + | error { set_error(ctx, @$, JS_E_MISSING_RBRACKET); YYABORT; } semicolon : ';' - | error { set_error(ctx, JS_E_MISSING_SEMICOLON); YYABORT; } + | error { set_error(ctx, @$, JS_E_MISSING_SEMICOLON); YYABORT; } %% @@ -1464,22 +1464,25 @@ static expression_t *new_call_expression(parser_ctx_t *ctx, expression_t *expres static int parser_error(unsigned *loc, parser_ctx_t *ctx, const char *str) { + if(ctx->error_loc == -1) + ctx->error_loc = *loc; if(ctx->hres == S_OK) ctx->hres = JS_E_SYNTAX; WARN("%s: %s\n", debugstr_w(ctx->begin + *loc), str); return 0; } -static void set_error(parser_ctx_t *ctx, UINT error) +static void set_error(parser_ctx_t *ctx, unsigned loc, HRESULT error) { ctx->hres = error; + ctx->error_loc = loc; } static BOOL explicit_error(parser_ctx_t *ctx, void *obj, WCHAR next) { if(obj || *(ctx->ptr-1)==next) return TRUE; - set_error(ctx, JS_E_SYNTAX); + set_error(ctx, ctx->ptr - ctx->begin /* FIXME */, JS_E_SYNTAX); return FALSE; } @@ -1563,7 +1566,7 @@ void parser_release(parser_ctx_t *ctx) heap_free(ctx); } -HRESULT script_parse(script_ctx_t *ctx, struct _compiler_ctx_t *compiler, const WCHAR *code, const WCHAR *delimiter, BOOL from_eval, +HRESULT script_parse(script_ctx_t *ctx, struct _compiler_ctx_t *compiler, bytecode_t *code, const WCHAR *delimiter, BOOL from_eval, parser_ctx_t **ret) { parser_ctx_t *parser_ctx; @@ -1576,9 +1579,10 @@ HRESULT script_parse(script_ctx_t *ctx, struct _compiler_ctx_t *compiler, const if(!parser_ctx) return E_OUTOFMEMORY; + parser_ctx->error_loc = -1; parser_ctx->is_html = delimiter && !wcsicmp(delimiter, html_tagW); - parser_ctx->begin = parser_ctx->ptr = code; + parser_ctx->begin = parser_ctx->ptr = code->source; parser_ctx->end = parser_ctx->begin + lstrlenW(parser_ctx->begin); script_addref(ctx); @@ -1596,8 +1600,11 @@ HRESULT script_parse(script_ctx_t *ctx, struct _compiler_ctx_t *compiler, const if(FAILED(hres)) { WARN("parser failed around %s\n", debugstr_w(parser_ctx->begin+20 > parser_ctx->ptr ? parser_ctx->begin : parser_ctx->ptr-20)); + + throw_error(ctx, hres, NULL); + set_error_location(ctx->ei, code, parser_ctx->error_loc, IDS_COMPILATION_ERROR); parser_release(parser_ctx); - return hres; + return DISP_E_EXCEPTION; } *ret = parser_ctx;
1
0
0
0
Jacek Caban : jscript: Delay error object creation for builtin errors with message string until it's needed.
by Alexandre Julliard
03 Feb '20
03 Feb '20
Module: wine Branch: master Commit: bfb2e5d9591272267203dba7192f405609bdd63b URL:
https://source.winehq.org/git/wine.git/?a=commit;h=bfb2e5d9591272267203dba7…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Feb 3 14:47:32 2020 +0100 jscript: Delay error object creation for builtin errors with message string until it's needed. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/jscript/dispex.c | 12 ++++++------ dlls/jscript/engine.c | 10 ++++------ dlls/jscript/error.c | 41 ++++++++--------------------------------- dlls/jscript/jscript.h | 2 +- 4 files changed, 19 insertions(+), 46 deletions(-) diff --git a/dlls/jscript/dispex.c b/dlls/jscript/dispex.c index 4ed327ad72..e986de6ef2 100644 --- a/dlls/jscript/dispex.c +++ b/dlls/jscript/dispex.c @@ -2483,13 +2483,13 @@ HRESULT jsdisp_define_property(jsdisp_t *obj, const WCHAR *name, property_desc_t if(((desc->mask & PROPF_CONFIGURABLE) && (desc->flags & PROPF_CONFIGURABLE)) || ((desc->mask & PROPF_ENUMERABLE) && ((desc->flags & PROPF_ENUMERABLE) != (prop->flags & PROPF_ENUMERABLE)))) - return throw_type_error(obj->ctx, JS_E_NONCONFIGURABLE_REDEFINED, name); + return throw_error(obj->ctx, JS_E_NONCONFIGURABLE_REDEFINED, name); } if(desc->explicit_value || (desc->mask & PROPF_WRITABLE)) { if(prop->type == PROP_ACCESSOR) { if(!(prop->flags & PROPF_CONFIGURABLE)) - return throw_type_error(obj->ctx, JS_E_NONCONFIGURABLE_REDEFINED, name); + return throw_error(obj->ctx, JS_E_NONCONFIGURABLE_REDEFINED, name); if(prop->u.accessor.getter) jsdisp_release(prop->u.accessor.getter); if(prop->u.accessor.setter) @@ -2504,7 +2504,7 @@ HRESULT jsdisp_define_property(jsdisp_t *obj, const WCHAR *name, property_desc_t }else { if(!(prop->flags & PROPF_CONFIGURABLE) && !(prop->flags & PROPF_WRITABLE)) { if((desc->mask & PROPF_WRITABLE) && (desc->flags & PROPF_WRITABLE)) - return throw_type_error(obj->ctx, JS_E_NONWRITABLE_MODIFIED, name); + return throw_error(obj->ctx, JS_E_NONWRITABLE_MODIFIED, name); if(desc->explicit_value) { if(prop->type == PROP_JSVAL) { BOOL eq; @@ -2512,7 +2512,7 @@ HRESULT jsdisp_define_property(jsdisp_t *obj, const WCHAR *name, property_desc_t if(FAILED(hres)) return hres; if(!eq) - return throw_type_error(obj->ctx, JS_E_NONWRITABLE_MODIFIED, name); + return throw_error(obj->ctx, JS_E_NONWRITABLE_MODIFIED, name); }else { FIXME("redefinition of property type %d\n", prop->type); } @@ -2533,7 +2533,7 @@ HRESULT jsdisp_define_property(jsdisp_t *obj, const WCHAR *name, property_desc_t }else if(desc->explicit_getter || desc->explicit_setter) { if(prop->type != PROP_ACCESSOR) { if(!(prop->flags & PROPF_CONFIGURABLE)) - return throw_type_error(obj->ctx, JS_E_NONCONFIGURABLE_REDEFINED, name); + return throw_error(obj->ctx, JS_E_NONCONFIGURABLE_REDEFINED, name); if(prop->type == PROP_JSVAL) jsval_release(prop->u.val); prop->type = PROP_ACCESSOR; @@ -2541,7 +2541,7 @@ HRESULT jsdisp_define_property(jsdisp_t *obj, const WCHAR *name, property_desc_t }else if(!(prop->flags & PROPF_CONFIGURABLE)) { if((desc->explicit_getter && desc->getter != prop->u.accessor.getter) || (desc->explicit_setter && desc->setter != prop->u.accessor.setter)) - return throw_type_error(obj->ctx, JS_E_NONCONFIGURABLE_REDEFINED, name); + return throw_error(obj->ctx, JS_E_NONCONFIGURABLE_REDEFINED, name); } if(desc->explicit_getter) { diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index e84dd4e3d7..054b0c7602 100644 --- a/dlls/jscript/engine.c +++ b/dlls/jscript/engine.c @@ -918,7 +918,7 @@ static HRESULT interp_throw_type(script_ctx_t *ctx) TRACE("%08x %s\n", hres, debugstr_jsstr(str)); ptr = jsstr_flatten(str); - return ptr ? throw_type_error(ctx, hres, ptr) : E_OUTOFMEMORY; + return ptr ? throw_error(ctx, hres, ptr) : E_OUTOFMEMORY; } /* ECMA-262 3rd Edition 12.14 */ @@ -1287,7 +1287,7 @@ static HRESULT identifier_value(script_ctx_t *ctx, BSTR identifier) return hres; if(exprval.type == EXPRVAL_INVALID) - return throw_type_error(ctx, exprval.u.hres, identifier); + return throw_error(ctx, exprval.u.hres, identifier); hres = exprval_to_value(ctx, &exprval, &v); if(FAILED(hres)) @@ -2777,10 +2777,8 @@ static HRESULT unwind_exception(script_ctx_t *ctx, HRESULT exception_hres) } frame = ctx->call_ctx; - if(exception_hres != DISP_E_EXCEPTION) { - reset_ei(ei); - ei->error = exception_hres; - } + if(exception_hres != DISP_E_EXCEPTION) + throw_error(ctx, exception_hres, NULL); set_error_location(ei, frame->bytecode, frame->bytecode->instrs[frame->ip].loc, IDS_RUNTIME_ERROR); while(!frame->except_frame) { diff --git a/dlls/jscript/error.c b/dlls/jscript/error.c index b58210d2a7..eca6c90138 100644 --- a/dlls/jscript/error.c +++ b/dlls/jscript/error.c @@ -409,40 +409,15 @@ static jsstr_t *format_error_message(HRESULT error, const WCHAR *arg) return r; } -static HRESULT throw_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str, jsdisp_t *constr) +HRESULT throw_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str) { - jsdisp_t *err; - jsstr_t *msg; - HRESULT hres; - - if(!is_jscript_error(error)) - return error; - - msg = format_error_message(error, str); - if(!msg) - return E_OUTOFMEMORY; - - WARN("%s\n", debugstr_jsstr(msg)); - - hres = create_error(ctx, constr, error, msg, &err); - jsstr_release(msg); - if(FAILED(hres)) - return hres; - - reset_ei(ctx->ei); - ctx->ei->valid_value = TRUE; - ctx->ei->value = jsval_obj(err); - return error; -} - -HRESULT throw_syntax_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str) -{ - return throw_error(ctx, error, str, ctx->syntax_error_constr); -} - -HRESULT throw_type_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str) -{ - return throw_error(ctx, error, str, ctx->type_error_constr); + jsexcept_t *ei = ctx->ei; + TRACE("%08x\n", error); + reset_ei(ei); + ei->error = error; + if(str) + ei->message = format_error_message(error, str); + return DISP_E_EXCEPTION; } void set_error_location(jsexcept_t *ei, bytecode_t *code, unsigned loc, unsigned source_id) diff --git a/dlls/jscript/jscript.h b/dlls/jscript/jscript.h index 9933347950..8db76bb50d 100644 --- a/dlls/jscript/jscript.h +++ b/dlls/jscript/jscript.h @@ -312,7 +312,7 @@ HRESULT Function_get_value(script_ctx_t*,jsdisp_t*,jsval_t*) DECLSPEC_HIDDEN; struct _function_code_t *Function_get_code(jsdisp_t*) DECLSPEC_HIDDEN; #define DEFAULT_FUNCTION_VALUE {NULL, Function_value,0, Function_get_value} -HRESULT throw_type_error(script_ctx_t*,HRESULT,const WCHAR*) DECLSPEC_HIDDEN; +HRESULT throw_error(script_ctx_t*,HRESULT,const WCHAR*) DECLSPEC_HIDDEN; jsdisp_t *create_builtin_error(script_ctx_t *ctx) DECLSPEC_HIDDEN; HRESULT create_object(script_ctx_t*,jsdisp_t*,jsdisp_t**) DECLSPEC_HIDDEN;
1
0
0
0
Jacek Caban : jscript: Support propagating error message.
by Alexandre Julliard
03 Feb '20
03 Feb '20
Module: wine Branch: master Commit: bcba07229a74f8a4e7edaa9da1a3ee4750da3492 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=bcba07229a74f8a4e7edaa9d…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Feb 3 14:47:25 2020 +0100 jscript: Support propagating error message. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/jscript/dispex.c | 2 ++ dlls/jscript/engine.c | 14 ++++++++++++-- dlls/jscript/engine.h | 1 + dlls/jscript/error.c | 4 +++- dlls/jscript/jscript.c | 4 ++++ 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/dlls/jscript/dispex.c b/dlls/jscript/dispex.c index 2038173dca..4ed327ad72 100644 --- a/dlls/jscript/dispex.c +++ b/dlls/jscript/dispex.c @@ -1978,6 +1978,8 @@ static HRESULT disp_invoke(script_ctx_t *ctx, IDispatch *disp, DISPID id, WORD f ctx->ei->error = (SUCCEEDED(ei.scode) || ei.scode == DISP_E_EXCEPTION) ? E_FAIL : ei.scode; if(ei.bstrSource) ctx->ei->source = jsstr_alloc_len(ei.bstrSource, SysStringLen(ei.bstrSource)); + if(ei.bstrDescription) + ctx->ei->message = jsstr_alloc_len(ei.bstrDescription, SysStringLen(ei.bstrDescription)); SysFreeString(ei.bstrSource); SysFreeString(ei.bstrDescription); SysFreeString(ei.bstrHelpFile); diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index 520b62fad2..e84dd4e3d7 100644 --- a/dlls/jscript/engine.c +++ b/dlls/jscript/engine.c @@ -867,6 +867,7 @@ static void set_error_value(script_ctx_t *ctx, jsval_t value) if(is_object_instance(value) && get_object(value) && (obj = to_jsdisp(get_object(value)))) { UINT32 number; + jsstr_t *str; jsval_t v; HRESULT hres; @@ -879,8 +880,15 @@ static void set_error_value(script_ctx_t *ctx, jsval_t value) ei->error = FAILED(number) ? number : E_FAIL; jsval_release(v); } - } + hres = jsdisp_propget_name(obj, L"description", &v); + if(SUCCEEDED(hres)) { + hres = to_string(ctx, v, &str); + if(SUCCEEDED(hres)) + ei->message = str; + jsval_release(v); + } + } } /* ECMA-262 3rd Edition 12.13 */ @@ -2769,8 +2777,10 @@ static HRESULT unwind_exception(script_ctx_t *ctx, HRESULT exception_hres) } frame = ctx->call_ctx; - if(exception_hres != DISP_E_EXCEPTION) + if(exception_hres != DISP_E_EXCEPTION) { + reset_ei(ei); ei->error = exception_hres; + } set_error_location(ei, frame->bytecode, frame->bytecode->instrs[frame->ip].loc, IDS_RUNTIME_ERROR); while(!frame->except_frame) { diff --git a/dlls/jscript/engine.h b/dlls/jscript/engine.h index 839d38d822..bb991c442e 100644 --- a/dlls/jscript/engine.h +++ b/dlls/jscript/engine.h @@ -228,6 +228,7 @@ struct _jsexcept_t { jsval_t value; jsstr_t *source; + jsstr_t *message; bytecode_t *code; unsigned loc; diff --git a/dlls/jscript/error.c b/dlls/jscript/error.c index 5551ab3a89..b58210d2a7 100644 --- a/dlls/jscript/error.c +++ b/dlls/jscript/error.c @@ -455,6 +455,8 @@ void set_error_location(jsexcept_t *ei, bytecode_t *code, unsigned loc, unsigned len = LoadStringW(jscript_hinstance, source_id, (WCHAR*)&res, 0); ei->source = jsstr_alloc_len(res, len); } + if(!ei->message) + ei->message = format_error_message(ei->error, NULL); } TRACE("source %s in %s\n", debugstr_w(code->source + loc), debugstr_w(code->source)); @@ -538,6 +540,6 @@ jsdisp_t *create_builtin_error(script_ctx_t *ctx) } } - hres = create_error(ctx, constr, ei->error, jsstr_empty(), &r); + hres = create_error(ctx, constr, ei->error, ei->message ? ei->message : jsstr_empty(), &r); return SUCCEEDED(hres) ? r : NULL; } diff --git a/dlls/jscript/jscript.c b/dlls/jscript/jscript.c index 09d002dbca..0e8d3ec2e9 100644 --- a/dlls/jscript/jscript.c +++ b/dlls/jscript/jscript.c @@ -223,6 +223,10 @@ void reset_ei(jsexcept_t *ei) jsstr_release(ei->source); ei->source = NULL; } + if(ei->message) { + jsstr_release(ei->message); + ei->message = NULL; + } } void enter_script(script_ctx_t *ctx, jsexcept_t *ei)
1
0
0
0
Jacek Caban : jscript: Store error location in jsexcept_t.
by Alexandre Julliard
03 Feb '20
03 Feb '20
Module: wine Branch: master Commit: 0f4d4f718448c2a4af128d2bd7c1de215e2bf7bc URL:
https://source.winehq.org/git/wine.git/?a=commit;h=0f4d4f718448c2a4af128d2b…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Feb 3 14:47:15 2020 +0100 jscript: Store error location in jsexcept_t. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/jscript/dispex.c | 2 ++ dlls/jscript/engine.c | 5 ++++- dlls/jscript/engine.h | 6 ++++++ dlls/jscript/error.c | 18 ++++++++++++++++++ dlls/jscript/jscript.c | 9 +++++++++ dlls/jscript/jscript.rc | 4 ++++ dlls/jscript/resource.h | 4 ++++ po/ar.po | 14 ++++++++++++++ po/ast.po | 12 ++++++++++++ po/bg.po | 13 +++++++++++++ po/ca.po | 14 ++++++++++++++ po/cs.po | 14 ++++++++++++++ po/da.po | 14 ++++++++++++++ po/de.po | 14 ++++++++++++++ po/el.po | 13 +++++++++++++ po/en.po | 12 ++++++++++++ po/en_US.po | 12 ++++++++++++ po/eo.po | 14 ++++++++++++++ po/es.po | 14 ++++++++++++++ po/fa.po | 12 ++++++++++++ po/fi.po | 14 ++++++++++++++ po/fr.po | 14 ++++++++++++++ po/he.po | 14 ++++++++++++++ po/hi.po | 12 ++++++++++++ po/hr.po | 14 ++++++++++++++ po/hu.po | 14 ++++++++++++++ po/it.po | 14 ++++++++++++++ po/ja.po | 14 ++++++++++++++ po/ko.po | 14 ++++++++++++++ po/lt.po | 14 ++++++++++++++ po/ml.po | 12 ++++++++++++ po/nb_NO.po | 14 ++++++++++++++ po/nl.po | 14 ++++++++++++++ po/or.po | 12 ++++++++++++ po/pa.po | 12 ++++++++++++ po/pl.po | 14 ++++++++++++++ po/pt_BR.po | 14 ++++++++++++++ po/pt_PT.po | 14 ++++++++++++++ po/rm.po | 12 ++++++++++++ po/ro.po | 14 ++++++++++++++ po/ru.po | 14 ++++++++++++++ po/si.po | 14 ++++++++++++++ po/sk.po | 14 ++++++++++++++ po/sl.po | 14 ++++++++++++++ po/sr_RS(a)cyrillic.po | 13 +++++++++++++ po/sr_RS(a)latin.po | 13 +++++++++++++ po/sv.po | 14 ++++++++++++++ po/ta.po | 12 ++++++++++++ po/te.po | 12 ++++++++++++ po/th.po | 14 ++++++++++++++ po/tr.po | 14 ++++++++++++++ po/uk.po | 14 ++++++++++++++ po/wa.po | 12 ++++++++++++ po/wine.pot | 12 ++++++++++++ po/zh_CN.po | 14 ++++++++++++++ po/zh_TW.po | 14 ++++++++++++++ 56 files changed, 703 insertions(+), 1 deletion(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=0f4d4f718448c2a4af12…
1
0
0
0
Jacek Caban : jscript: Propagate Invoke error code using jsexcept_t.
by Alexandre Julliard
03 Feb '20
03 Feb '20
Module: wine Branch: master Commit: 83fa76c25e89897766eb6abde3c266e129f1baa5 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=83fa76c25e89897766eb6abd…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Feb 3 14:47:07 2020 +0100 jscript: Propagate Invoke error code using jsexcept_t. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/jscript/dispex.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dlls/jscript/dispex.c b/dlls/jscript/dispex.c index cdfbf9f57e..5b41f2702c 100644 --- a/dlls/jscript/dispex.c +++ b/dlls/jscript/dispex.c @@ -1974,7 +1974,8 @@ static HRESULT disp_invoke(script_ctx_t *ctx, IDispatch *disp, DISPID id, WORD f if(hres == DISP_E_EXCEPTION) { TRACE("DISP_E_EXCEPTION: %08x %s %s\n", ei.scode, debugstr_w(ei.bstrSource), debugstr_w(ei.bstrDescription)); - hres = SUCCEEDED(ei.scode) ? E_FAIL : ei.scode; + reset_ei(ctx->ei); + ctx->ei->error = (SUCCEEDED(ei.scode) || ei.scode == DISP_E_EXCEPTION) ? E_FAIL : ei.scode; SysFreeString(ei.bstrSource); SysFreeString(ei.bstrDescription); SysFreeString(ei.bstrHelpFile);
1
0
0
0
← Newer
1
...
78
79
80
81
82
83
84
...
88
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
Results per page:
10
25
50
100
200