Jacek Caban : jscript: Support properties argument in Object.create.

Alexandre Julliard julliard at winehq.org
Wed Aug 21 14:39:33 CDT 2019


Module: wine
Branch: master
Commit: e458e706360f8556367202174953a716cab5e0e9
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=e458e706360f8556367202174953a716cab5e0e9

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Aug 21 12:31:33 2019 +0200

jscript: Support properties argument in Object.create.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/jscript/object.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/dlls/jscript/object.c b/dlls/jscript/object.c
index 7794f1d..123541e 100644
--- a/dlls/jscript/object.c
+++ b/dlls/jscript/object.c
@@ -598,11 +598,6 @@ static HRESULT Object_create(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags,
 
     TRACE("(%s)\n", debugstr_jsval(argv[0]));
 
-    if(argc > 1) {
-        FIXME("Unsupported properties argument %s\n", debugstr_jsval(argv[1]));
-        return E_NOTIMPL;
-    }
-
     if(argc && is_object_instance(argv[0])) {
         if(get_object(argv[0]))
             proto = to_jsdisp(get_object(argv[0]));
@@ -615,13 +610,18 @@ static HRESULT Object_create(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags,
         return E_INVALIDARG;
     }
 
-    if(r) {
-        hres = create_dispex(ctx, NULL, proto, &obj);
-        if(FAILED(hres))
-            return hres;
+    hres = create_dispex(ctx, NULL, proto, &obj);
+    if(FAILED(hres))
+        return hres;
+
+    if(argc >= 2 && !is_undefined(argv[1]))
+        hres = jsdisp_define_properties(ctx, obj, argv[1]);
+
+    if(SUCCEEDED(hres) && r)
         *r = jsval_obj(obj);
-    }
-    return S_OK;
+    else
+        jsdisp_release(obj);
+    return hres;
 }
 
 static HRESULT Object_getPrototypeOf(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags,




More information about the wine-cvs mailing list