Jacek Caban : mshtml: Added get_event_dispex_ref helper that avoids using attr_name.

Alexandre Julliard julliard at winehq.org
Fri Feb 17 14:37:12 CST 2017


Module: wine
Branch: master
Commit: 607a8d0121dcdee783f808eeb9dc7e32ac47f936
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=607a8d0121dcdee783f808eeb9dc7e32ac47f936

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Feb 17 13:17:02 2017 +0100

mshtml: Added get_event_dispex_ref helper that avoids using attr_name.

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

---

 dlls/mshtml/htmlevent.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/dlls/mshtml/htmlevent.c b/dlls/mshtml/htmlevent.c
index 13fda24..7c25ad9 100644
--- a/dlls/mshtml/htmlevent.c
+++ b/dlls/mshtml/htmlevent.c
@@ -1396,13 +1396,22 @@ void detach_events(HTMLDocumentNode *doc)
     release_nsevents(doc);
 }
 
+static HRESULT get_event_dispex_ref(EventTarget *event_target, eventid_t eid, BOOL alloc, VARIANT **ret)
+{
+    WCHAR buf[64];
+    buf[0] = 'o';
+    buf[1] = 'n';
+    strcpyW(buf+2, event_info[eid].name);
+    return dispex_get_dprop_ref(&event_target->dispex, buf, alloc, ret);
+}
+
 static void remove_event_handler(EventTarget *event_target, eventid_t eid)
 {
     handler_vector_t *handler_vector;
     VARIANT *store;
     HRESULT hres;
 
-    hres = dispex_get_dprop_ref(&event_target->dispex, event_info[eid].attr_name, FALSE, &store);
+    hres = get_event_dispex_ref(event_target, eid, FALSE, &store);
     if(SUCCEEDED(hres))
         VariantClear(store);
 
@@ -1458,7 +1467,7 @@ HRESULT set_event_handler(EventTarget *event_target, eventid_t eid, VARIANT *var
          */
         remove_event_handler(event_target, eid);
 
-        hres = dispex_get_dprop_ref(&event_target->dispex, event_info[eid].attr_name, TRUE, &v);
+        hres = get_event_dispex_ref(event_target, eid, TRUE, &v);
         if(FAILED(hres))
             return hres;
 
@@ -1485,7 +1494,7 @@ HRESULT get_event_handler(EventTarget *event_target, eventid_t eid, VARIANT *var
     VARIANT *v;
     HRESULT hres;
 
-    hres = dispex_get_dprop_ref(&event_target->dispex, event_info[eid].attr_name, FALSE, &v);
+    hres = get_event_dispex_ref(event_target, eid, FALSE, &v);
     if(SUCCEEDED(hres) && V_VT(v) != VT_EMPTY) {
         V_VT(var) = VT_EMPTY;
         return VariantCopy(var, v);




More information about the wine-cvs mailing list