Jacek Caban : jscript: Make String.length non-writable.

Alexandre Julliard julliard at winehq.org
Thu May 10 18:23:16 CDT 2018


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu May 10 19:20:28 2018 +0200

jscript: Make String.length non-writable.

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

---

 dlls/jscript/string.c     | 10 ++--------
 dlls/jscript/tests/api.js |  6 ++++++
 dlls/mshtml/tests/es5.js  |  1 +
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/dlls/jscript/string.c b/dlls/jscript/string.c
index ad978f2..737c878 100644
--- a/dlls/jscript/string.c
+++ b/dlls/jscript/string.c
@@ -119,12 +119,6 @@ static HRESULT String_get_length(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r
     return S_OK;
 }
 
-static HRESULT String_set_length(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t value)
-{
-    FIXME("%p\n", jsthis);
-    return E_NOTIMPL;
-}
-
 static HRESULT stringobj_to_string(vdisp_t *jsthis, jsval_t *r)
 {
     StringInstance *string;
@@ -1539,7 +1533,7 @@ static const builtin_prop_t String_props[] = {
     {indexOfW,               String_indexOf,               PROPF_METHOD|2},
     {italicsW,               String_italics,               PROPF_METHOD},
     {lastIndexOfW,           String_lastIndexOf,           PROPF_METHOD|2},
-    {lengthW,                NULL,0,                       String_get_length, String_set_length},
+    {lengthW,                NULL,0,                       String_get_length},
     {linkW,                  String_link,                  PROPF_METHOD|1},
     {localeCompareW,         String_localeCompare,         PROPF_METHOD|1},
     {matchW,                 String_match,                 PROPF_METHOD|1},
@@ -1571,7 +1565,7 @@ static const builtin_info_t String_info = {
 };
 
 static const builtin_prop_t StringInst_props[] = {
-    {lengthW,                NULL,0,                       String_get_length, String_set_length}
+    {lengthW,                NULL,0,                       String_get_length}
 };
 
 static const builtin_info_t StringInst_info = {
diff --git a/dlls/jscript/tests/api.js b/dlls/jscript/tests/api.js
index f124c46..f9178a9 100644
--- a/dlls/jscript/tests/api.js
+++ b/dlls/jscript/tests/api.js
@@ -408,6 +408,12 @@ ok(str.toString() === "", "str.toString() = " + str.toString());
 var str = new String("test", "abc");
 ok(str.toString() === "test", "str.toString() = " + str.toString());
 
+str = new String("test");
+ok(str.length === 4, "str.length = " + str.length);
+str.length = 3;
+str.length = 5;
+ok(str.length === 4, "str.length = " + str.length);
+
 var strObj = new Object();
 strObj.toString = function() { return "abcd" };
 strObj.substr = String.prototype.substr;
diff --git a/dlls/mshtml/tests/es5.js b/dlls/mshtml/tests/es5.js
index efdfb0a..1096307 100644
--- a/dlls/mshtml/tests/es5.js
+++ b/dlls/mshtml/tests/es5.js
@@ -166,6 +166,7 @@ function test_getOwnPropertyDescriptor() {
     test_own_data_prop_desc(Math, "PI", false, false, false);
 
     var obj = new String();
+    test_own_data_prop_desc(obj, "length", false, false, false);
     ok(Object.getOwnPropertyDescriptor(obj, "slice") === undefined,
        "getOwnPropertyDescriptor(slice) did not return undefined");
     test_own_data_prop_desc(String.prototype, "slice", true, false, true);




More information about the wine-cvs mailing list