[PATCH v2 0/2] MR6067: jscript: Use actual object disp for the return value when defining property.
-- v2: jscript: Use actual object disp for the return value when defining property. jscript: Make JS_COUNT_OPERATION a no-op. https://gitlab.winehq.org/wine/wine/-/merge_requests/6067
From: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> It's not an error, and this just pollutes the logs for no reason. Signed-off-by: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> --- dlls/jscript/regexp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/jscript/regexp.c b/dlls/jscript/regexp.c index 325b5ad56d6..a29b4bb90e1 100644 --- a/dlls/jscript/regexp.c +++ b/dlls/jscript/regexp.c @@ -45,7 +45,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(jscript); #define ReportRegExpErrorHelper(a,b,c,d) throw_error((a)->context, E_FAIL, L"") #define JS_ReportErrorNumber(a,b,c,d) throw_error((a), E_FAIL, L"") #define JS_ReportErrorFlagsAndNumber(a,b,c,d,e,f) throw_error((a), E_FAIL, L"") -#define JS_COUNT_OPERATION(a,b) throw_error((a), E_FAIL, L"") +#define JS_COUNT_OPERATION(a,b) do { } while(0) typedef BYTE JSPackedBool; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6067
From: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> Prevents crash when the object is not a jsdisp. Signed-off-by: Gabriel Ivăncescu <gabrielopcode(a)gmail.com> --- dlls/jscript/object.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/jscript/object.c b/dlls/jscript/object.c index da544c6b1c3..843d029a53a 100644 --- a/dlls/jscript/object.c +++ b/dlls/jscript/object.c @@ -710,8 +710,10 @@ static HRESULT Object_defineProperty(script_ctx_t *ctx, jsval_t vthis, WORD flag hres = jsdisp_define_property(obj, name, &prop_desc); jsstr_release(name_str); release_property_descriptor(&prop_desc); - if(SUCCEEDED(hres) && r) - *r = jsval_obj(jsdisp_addref(obj)); + if(SUCCEEDED(hres) && r) { + *r = jsval_disp(get_object(argv[0])); + IDispatch_AddRef(get_object(argv[0])); + } return hres; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6067
Jacek Caban (@jacek) commented about dlls/jscript/object.c:
hres = jsdisp_define_property(obj, name, &prop_desc); jsstr_release(name_str); release_property_descriptor(&prop_desc); - if(SUCCEEDED(hres) && r) - *r = jsval_obj(jsdisp_addref(obj)); + if(SUCCEEDED(hres) && r) { + *r = jsval_disp(get_object(argv[0])); + IDispatch_AddRef(get_object(argv[0])); + }
Why do we need it? We ensure that obj is a jsdisp earlier in the function. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/6067#note_76092
On Sun Jul 14 09:46:34 2024 +0000, Jacek Caban wrote:
Why do we need it? We ensure that obj is a jsdisp earlier in the function. Oops, you're right, I messed it up with a CrossOver hack. I'll remove the commit.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/6067#note_76224
participants (2)
-
Gabriel Ivăncescu -
Jacek Caban (@jacek)