1
0
mirror of https://github.com/wine-mirror/wine synced 2024-07-01 07:14:31 +00:00

jscript: Introduce to_jsdispex.

This commit is contained in:
Jacek Caban 2024-06-27 19:54:33 +02:00 committed by Alexandre Julliard
parent be46a6033d
commit 119b0bb77d
5 changed files with 10 additions and 5 deletions

View File

@ -1560,7 +1560,7 @@ static HRESULT Array_unshift(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsig
hres = jsdisp_propput_idx(jsthis, i+argc, val);
jsval_release(val);
}else if(hres == DISP_E_UNKNOWNNAME) {
hres = IDispatchEx_DeleteMemberByDispID(&jsthis->IDispatchEx_iface, id);
hres = IDispatchEx_DeleteMemberByDispID(to_dispex(jsthis), id);
}
}

View File

@ -1893,7 +1893,7 @@ static HRESULT WINAPI DispatchEx_Invoke(IDispatchEx *iface, DISPID dispIdMember,
TRACE("(%p)->(%ld %s %ld %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
return IDispatchEx_InvokeEx(&This->IDispatchEx_iface, dispIdMember, lcid, wFlags,
return IDispatchEx_InvokeEx(to_dispex(This), dispIdMember, lcid, wFlags,
pDispParams, pVarResult, pExcepInfo, NULL);
}

View File

@ -216,6 +216,11 @@ static inline IDispatch *to_disp(jsdisp_t *jsdisp)
return (IDispatch*)&jsdisp->IDispatchEx_iface;
}
static inline IDispatchEx *to_dispex(jsdisp_t *jsdisp)
{
return &jsdisp->IDispatchEx_iface;
}
jsdisp_t *as_jsdisp(IDispatch*);
jsdisp_t *to_jsdisp(IDispatch*);
void jsdisp_free(jsdisp_t*);

View File

@ -671,7 +671,7 @@ static HRESULT stringify_object(stringify_ctx_t *ctx, jsdisp_t *obj)
if(!append_char(ctx, '{'))
return E_OUTOFMEMORY;
while((hres = IDispatchEx_GetNextDispID(&obj->IDispatchEx_iface, fdexEnumDefault, dispid, &dispid)) == S_OK) {
while((hres = IDispatchEx_GetNextDispID(to_dispex(obj), fdexEnumDefault, dispid, &dispid)) == S_OK) {
stepback = ctx->buf_len;
if(prop_cnt && !append_char(ctx, ',')) {
@ -693,7 +693,7 @@ static HRESULT stringify_object(stringify_ctx_t *ctx, jsdisp_t *obj)
}
}
hres = IDispatchEx_GetMemberName(&obj->IDispatchEx_iface, dispid, &prop_name);
hres = IDispatchEx_GetMemberName(to_dispex(obj), dispid, &prop_name);
if(FAILED(hres))
return hres;

View File

@ -655,7 +655,7 @@ static HRESULT jsdisp_define_properties(script_ctx_t *ctx, jsdisp_t *obj, jsval_
if(FAILED(hres))
break;
hres = IDispatchEx_GetMemberName(&list_obj->IDispatchEx_iface, id, &name);
hres = IDispatchEx_GetMemberName(to_dispex(list_obj), id, &name);
if(SUCCEEDED(hres))
hres = jsdisp_define_property(obj, name, &prop_desc);
release_property_descriptor(&prop_desc);