Jacek Caban (@jacek) commented about dlls/mshtml/htmlevent.c:
+ DOMProgressEvent *progress_event = event; + progress_event->IDOMProgressEvent_iface.lpVtbl = &DOMProgressEventVtbl; + progress_event->nsevent = iface; }
static DOMEvent *alloc_event(nsIDOMEvent *nsevent, compat_mode_t compat_mode, eventid_t event_id) { + static const struct { + REFIID iid; + dispex_static_data_t *dispex_data; + void (*ctor)(void *event, void *iface); + void *(*query_interface)(DOMEvent*,REFIID); + void (*destroy)(DOMEvent*); + unsigned size; + compat_mode_t compat_mode; + } types_table[] = { Having a constructor here should be enough, other fields seem redundant. You could, for example, move allocation to constructors. Constructors would then call a common allocation helper, passing required info.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/487#note_4653