From: Gabriel Ivăncescu gabrielopcode@gmail.com
We can just use the object's prop_put now.
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/jscript/array.c | 31 ++++++++++++++++++------------- dlls/jscript/arraybuf.c | 6 ------ dlls/jscript/bool.c | 2 -- dlls/jscript/date.c | 3 --- dlls/jscript/dispex.c | 9 +++++---- dlls/jscript/engine.c | 1 - dlls/jscript/enumerator.c | 3 --- dlls/jscript/error.c | 2 -- dlls/jscript/function.c | 5 ----- dlls/jscript/global.c | 1 - dlls/jscript/jscript.c | 1 - dlls/jscript/jscript.h | 2 +- dlls/jscript/json.c | 1 - dlls/jscript/jsregexp.c | 3 --- dlls/jscript/math.c | 1 - dlls/jscript/number.c | 2 -- dlls/jscript/object.c | 3 --- dlls/jscript/set.c | 6 ------ dlls/jscript/string.c | 3 --- dlls/jscript/vbarray.c | 1 - 20 files changed, 24 insertions(+), 62 deletions(-)
diff --git a/dlls/jscript/array.c b/dlls/jscript/array.c index 6d2bbd7e32e..f6449ec0ad1 100644 --- a/dlls/jscript/array.c +++ b/dlls/jscript/array.c @@ -1594,25 +1594,33 @@ static void Array_destructor(jsdisp_t *dispex) free(dispex); }
-static void Array_on_put(jsdisp_t *dispex, const WCHAR *name) +static HRESULT Array_prop_put(jsdisp_t *dispex, DISPID id, jsval_t val) { ArrayInstance *array = array_from_jsdisp(dispex); - const WCHAR *ptr = name; - DWORD id = 0; + const WCHAR *ptr; + DWORD idx = 0; + HRESULT hres; + + hres = dispex_prop_put(&array->dispex, id, val); + if(hres != S_OK) + return hres;
+ ptr = dispex_prop_get_static_name(&array->dispex, id); if(!is_digit(*ptr)) - return; + return hres;
while(*ptr && is_digit(*ptr)) { - id = id*10 + (*ptr-'0'); + idx = idx*10 + (*ptr-'0'); ptr++; }
if(*ptr) - return; + return hres;
- if(id >= array->length) - array->length = id+1; + if(idx >= array->length) + array->length = idx + 1; + + return hres; }
static const builtin_prop_t Array_props[] = { @@ -1645,9 +1653,8 @@ static const builtin_info_t Array_info = { ARRAY_SIZE(Array_props), Array_props, Array_destructor, - Array_on_put, dispex_prop_get, - dispex_prop_put, + Array_prop_put, dispex_prop_invoke, dispex_prop_delete, dispex_prop_get_desc, @@ -1665,9 +1672,8 @@ static const builtin_info_t ArrayInst_info = { ARRAY_SIZE(ArrayInst_props), ArrayInst_props, Array_destructor, - Array_on_put, dispex_prop_get, - dispex_prop_put, + Array_prop_put, dispex_prop_invoke, dispex_prop_delete, dispex_prop_get_desc, @@ -1780,7 +1786,6 @@ static const builtin_info_t ArrayConstr_info = { ARRAY_SIZE(ArrayConstr_props), ArrayConstr_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/arraybuf.c b/dlls/jscript/arraybuf.c index cd92fb47924..ce0c482e914 100644 --- a/dlls/jscript/arraybuf.c +++ b/dlls/jscript/arraybuf.c @@ -126,7 +126,6 @@ static const builtin_info_t ArrayBuffer_info = { ARRAY_SIZE(ArrayBuffer_props), ArrayBuffer_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -146,7 +145,6 @@ static const builtin_info_t ArrayBufferInst_info = { ARRAY_SIZE(ArrayBufferInst_props), ArrayBufferInst_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -233,7 +231,6 @@ static const builtin_info_t ArrayBufferConstr_info = { ARRAY_SIZE(ArrayBufferConstr_props), ArrayBufferConstr_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -636,7 +633,6 @@ static const builtin_info_t DataView_info = { ARRAY_SIZE(DataView_props), DataView_props, DataView_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -656,7 +652,6 @@ static const builtin_info_t DataViewInst_info = { 0, NULL, DataView_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -741,7 +736,6 @@ static const builtin_info_t DataViewConstr_info = { 0, NULL, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/bool.c b/dlls/jscript/bool.c index 51a51cd48de..0b5f9a2c34f 100644 --- a/dlls/jscript/bool.c +++ b/dlls/jscript/bool.c @@ -124,7 +124,6 @@ static const builtin_info_t Bool_info = { ARRAY_SIZE(Bool_props), Bool_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -139,7 +138,6 @@ static const builtin_info_t BoolInst_info = { Bool_value, 0, NULL, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/date.c b/dlls/jscript/date.c index f712a7f5805..25a99a45b54 100644 --- a/dlls/jscript/date.c +++ b/dlls/jscript/date.c @@ -1905,7 +1905,6 @@ static const builtin_info_t Date_info = { ARRAY_SIZE(Date_props), Date_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -1920,7 +1919,6 @@ static const builtin_info_t DateInst_info = { NULL, 0, NULL, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -2455,7 +2453,6 @@ static const builtin_info_t DateConstr_info = { ARRAY_SIZE(DateConstr_props), DateConstr_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/dispex.c b/dlls/jscript/dispex.c index a5036231327..5ab4dae94b9 100644 --- a/dlls/jscript/dispex.c +++ b/dlls/jscript/dispex.c @@ -569,9 +569,6 @@ HRESULT dispex_prop_put(jsdisp_t *jsdisp, DISPID id, jsval_t val) if(FAILED(hres)) return hres;
- if(jsdisp->builtin_info->on_put) - jsdisp->builtin_info->on_put(jsdisp, prop->name); - return S_OK; }
@@ -816,6 +813,11 @@ HRESULT dispex_prop_define(jsdisp_t *jsdisp, DISPID id, const property_desc_t *d return S_OK; }
+const WCHAR *dispex_prop_get_static_name(jsdisp_t *jsdisp, DISPID id) +{ + return jsdisp->props[prop_id_to_idx(id)].name; +} + static HRESULT fill_props(jsdisp_t *obj) { HRESULT hres; @@ -2384,7 +2386,6 @@ static const builtin_info_t dispex_info = { NULL, 0, NULL, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index 777a3462c3a..e8437780d1b 100644 --- a/dlls/jscript/engine.c +++ b/dlls/jscript/engine.c @@ -550,7 +550,6 @@ static const builtin_info_t scope_info = { 0, NULL, scope_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/enumerator.c b/dlls/jscript/enumerator.c index 7c14955759b..1282882ae8f 100644 --- a/dlls/jscript/enumerator.c +++ b/dlls/jscript/enumerator.c @@ -187,7 +187,6 @@ static const builtin_info_t Enumerator_info = { ARRAY_SIZE(Enumerator_props), Enumerator_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -203,7 +202,6 @@ static const builtin_info_t EnumeratorInst_info = { 0, NULL, Enumerator_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -343,7 +341,6 @@ static const builtin_info_t EnumeratorConstr_info = { 0, NULL, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/error.c b/dlls/jscript/error.c index 00e748b1f60..88e9e14fede 100644 --- a/dlls/jscript/error.c +++ b/dlls/jscript/error.c @@ -144,7 +144,6 @@ static const builtin_info_t Error_info = { ARRAY_SIZE(Error_props), Error_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -160,7 +159,6 @@ static const builtin_info_t ErrorInst_info = { 0, NULL, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/function.c b/dlls/jscript/function.c index 1335aad4a40..3b43b763512 100644 --- a/dlls/jscript/function.c +++ b/dlls/jscript/function.c @@ -189,7 +189,6 @@ static const builtin_info_t Arguments_info = { Arguments_value, 0, NULL, Arguments_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -614,7 +613,6 @@ static const builtin_info_t Function_info = { ARRAY_SIZE(Function_props), Function_props, Function_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -640,7 +638,6 @@ static const builtin_info_t FunctionInst_info = { ARRAY_SIZE(FunctionInst_props), FunctionInst_props, Function_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -834,7 +831,6 @@ static const builtin_info_t InterpretedFunction_info = { ARRAY_SIZE(InterpretedFunction_props), InterpretedFunction_props, Function_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -973,7 +969,6 @@ static const builtin_info_t BindFunction_info = { ARRAY_SIZE(BindFunction_props), BindFunction_props, Function_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/global.c b/dlls/jscript/global.c index ab00017cda2..a97ec29c7e8 100644 --- a/dlls/jscript/global.c +++ b/dlls/jscript/global.c @@ -910,7 +910,6 @@ static const builtin_info_t JSGlobal_info = { ARRAY_SIZE(JSGlobal_props), JSGlobal_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/jscript.c b/dlls/jscript/jscript.c index 721a2edf826..38a65471bb5 100644 --- a/dlls/jscript/jscript.c +++ b/dlls/jscript/jscript.c @@ -127,7 +127,6 @@ HRESULT create_named_item_script_obj(script_ctx_t *ctx, named_item_t *item) NULL, 0, NULL, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/jscript.h b/dlls/jscript/jscript.h index 67f5c3a90da..70edb27447d 100644 --- a/dlls/jscript/jscript.h +++ b/dlls/jscript/jscript.h @@ -137,6 +137,7 @@ HRESULT dispex_prop_delete(jsdisp_t*,DISPID,BOOL*); HRESULT dispex_prop_get_desc(jsdisp_t*,DISPID,BOOL,property_desc_t*); void *dispex_prop_get_name(jsdisp_t*,DISPID,BOOL); HRESULT dispex_prop_define(jsdisp_t*,DISPID,const property_desc_t*); +const WCHAR *dispex_prop_get_static_name(jsdisp_t*,DISPID);
struct thread_data { LONG ref; @@ -191,7 +192,6 @@ typedef struct { DWORD props_cnt; const builtin_prop_t *props; void (*destructor)(jsdisp_t*); - void (*on_put)(jsdisp_t*,const WCHAR*); HRESULT (*prop_get)(jsdisp_t*,IDispatch*,DISPID,jsval_t*); HRESULT (*prop_put)(jsdisp_t*,DISPID,jsval_t); HRESULT (*prop_invoke)(jsdisp_t*,IDispatch*,DISPID,WORD,unsigned,jsval_t*,jsval_t*,IServiceProvider*); diff --git a/dlls/jscript/json.c b/dlls/jscript/json.c index 66c220e1c18..6ae5bf961cb 100644 --- a/dlls/jscript/json.c +++ b/dlls/jscript/json.c @@ -953,7 +953,6 @@ static const builtin_info_t JSON_info = { ARRAY_SIZE(JSON_props), JSON_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/jsregexp.c b/dlls/jscript/jsregexp.c index 93e5b1351f9..02a35c09f71 100644 --- a/dlls/jscript/jsregexp.c +++ b/dlls/jscript/jsregexp.c @@ -575,7 +575,6 @@ static const builtin_info_t RegExp_info = { ARRAY_SIZE(RegExp_props), RegExp_props, RegExp_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -603,7 +602,6 @@ static const builtin_info_t RegExpInst_info = { ARRAY_SIZE(RegExpInst_props), RegExpInst_props, RegExp_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -980,7 +978,6 @@ static const builtin_info_t RegExpConstr_info = { ARRAY_SIZE(RegExpConstr_props), RegExpConstr_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/math.c b/dlls/jscript/math.c index 11e9670a71a..6d820ec71e1 100644 --- a/dlls/jscript/math.c +++ b/dlls/jscript/math.c @@ -496,7 +496,6 @@ static const builtin_info_t Math_info = { ARRAY_SIZE(Math_props), Math_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/number.c b/dlls/jscript/number.c index 186fcc6ee2f..9be6f6a2f90 100644 --- a/dlls/jscript/number.c +++ b/dlls/jscript/number.c @@ -591,7 +591,6 @@ static const builtin_info_t Number_info = { ARRAY_SIZE(Number_props), Number_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -606,7 +605,6 @@ static const builtin_info_t NumberInst_info = { NULL, 0, NULL, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/object.c b/dlls/jscript/object.c index a2097cb2d3c..8739c0089e7 100644 --- a/dlls/jscript/object.c +++ b/dlls/jscript/object.c @@ -470,7 +470,6 @@ static const builtin_info_t Object_info = { ARRAY_SIZE(Object_props), Object_props, Object_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -485,7 +484,6 @@ static const builtin_info_t ObjectInst_info = { NULL, 0, NULL, Object_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -1088,7 +1086,6 @@ static const builtin_info_t ObjectConstr_info = { ARRAY_SIZE(ObjectConstr_props), ObjectConstr_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/set.c b/dlls/jscript/set.c index 24bdc059b27..4310cd6f86c 100644 --- a/dlls/jscript/set.c +++ b/dlls/jscript/set.c @@ -406,7 +406,6 @@ static const builtin_info_t Map_prototype_info = { ARRAY_SIZE(Map_prototype_props), Map_prototype_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -422,7 +421,6 @@ static const builtin_info_t Map_info = { ARRAY_SIZE(Map_props), Map_props, Map_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -579,7 +577,6 @@ static const builtin_info_t Set_prototype_info = { ARRAY_SIZE(Set_prototype_props), Set_prototype_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -595,7 +592,6 @@ static const builtin_info_t Set_info = { ARRAY_SIZE(Map_props), Map_props, Map_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -890,7 +886,6 @@ static const builtin_info_t WeakMap_prototype_info = { ARRAY_SIZE(WeakMap_prototype_props), WeakMap_prototype_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -906,7 +901,6 @@ static const builtin_info_t WeakMap_info = { 0, NULL, WeakMap_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/string.c b/dlls/jscript/string.c index 3dac3bd41e1..e3aa61483d1 100644 --- a/dlls/jscript/string.c +++ b/dlls/jscript/string.c @@ -1574,7 +1574,6 @@ static const builtin_info_t String_info = { ARRAY_SIZE(String_props), String_props, String_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -1594,7 +1593,6 @@ static const builtin_info_t StringInst_info = { ARRAY_SIZE(StringInst_props), StringInst_props, String_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, @@ -1722,7 +1720,6 @@ static const builtin_info_t StringConstr_info = { ARRAY_SIZE(StringConstr_props), StringConstr_props, NULL, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke, diff --git a/dlls/jscript/vbarray.c b/dlls/jscript/vbarray.c index 55b9e0df109..81eaf83f908 100644 --- a/dlls/jscript/vbarray.c +++ b/dlls/jscript/vbarray.c @@ -252,7 +252,6 @@ static const builtin_info_t VBArray_info = { ARRAY_SIZE(VBArray_props), VBArray_props, VBArray_destructor, - NULL, dispex_prop_get, dispex_prop_put, dispex_prop_invoke,