[前][次][番号順一覧][スレッド一覧]

ruby-changes:6618

From: suke <ko1@a...>
Date: Sun, 20 Jul 2008 01:28:45 +0900 (JST)
Subject: [ruby-changes:6618] Ruby:r18133 (trunk): * ext/win32ole/win32ole.c (EVENTSINK_Invoke): little refactoring.

suke	2008-07-20 01:28:23 +0900 (Sun, 20 Jul 2008)

  New Revision: 18133

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18133

  Log:
    * ext/win32ole/win32ole.c (EVENTSINK_Invoke): little refactoring.
    
    * ext/win32ole/win32ole.c (EVENTSINK_GetIDsOfNames): return
      ITypeInfo::GetIDsOfNames().

  Modified files:
    trunk/ChangeLog
    trunk/ext/win32ole/win32ole.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18132)
+++ ChangeLog	(revision 18133)
@@ -1,3 +1,10 @@
+Sun Jul 20 01:23:24 2008  Masaki Suketa  <masaki.suketa@n...>
+
+	* ext/win32ole/win32ole.c (EVENTSINK_Invoke): little refactoring.
+
+	* ext/win32ole/win32ole.c (EVENTSINK_GetIDsOfNames): return
+	  ITypeInfo::GetIDsOfNames().
+
 Sat Jul 19 09:31:35 2008  Masaki Suketa  <masaki.suketa@n...>
 
 	* ext/win32ole/win32ole.c (EVENTSINK_Invoke): little refactoring.
Index: ext/win32ole/win32ole.c
===================================================================
--- ext/win32ole/win32ole.c	(revision 18132)
+++ ext/win32ole/win32ole.c	(revision 18133)
@@ -118,7 +118,7 @@
 
 #define WC2VSTR(x) ole_wc2vstr((x), TRUE)
 
-#define WIN32OLE_VERSION "1.2.5"
+#define WIN32OLE_VERSION "1.2.6"
 
 typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX)
     (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*);
@@ -7353,13 +7353,19 @@
 }
 
 STDMETHODIMP EVENTSINK_GetIDsOfNames(
-    PEVENTSINK pEV,
+    PEVENTSINK pEventSink,
     REFIID riid,
     OLECHAR **szNames,
     UINT cNames,
     LCID lcid,
     DISPID *pDispID
     ) {
+    ITypeInfo *pTypeInfo;
+    PIEVENTSINKOBJ pEV = (PIEVENTSINKOBJ)pEventSink;
+    pTypeInfo = pEV->pTypeInfo;
+    if (pTypeInfo) {
+	return pTypeInfo->lpVtbl->GetIDsOfNames(pTypeInfo, szNames, cNames, pDispID);
+    }
     return DISP_E_UNKNOWNNAME;
 }
 
@@ -7470,8 +7476,9 @@
 static VALUE
 exec_callback(VALUE arg)
 {
-    VALUE handler = rb_ary_entry(arg, 0);
-    VALUE args = rb_ary_entry(arg, 1);
+    VALUE *parg = (VALUE *)arg;
+    VALUE handler = parg[0];
+    VALUE args = parg[1];
     return rb_apply(handler, rb_intern("call"), args);
 }
 
@@ -7512,7 +7519,7 @@
     ITypeInfo *pTypeInfo;
     VARIANT *pvar;
     VALUE ary, obj, event, handler, args, outargv, ev, result;
-    VALUE arg;
+    VALUE arg[2];
     VALUE is_outarg;
     BOOL is_default_handler = FALSE;
 
@@ -7554,9 +7561,6 @@
 	outargv = rb_ary_new();
         rb_ary_push(args, outargv);
     }
-    arg = rb_ary_new();
-    rb_ary_push(arg, handler);
-    rb_ary_push(arg, args);
 
     /*
      * if exception raised in event callback,
@@ -7565,7 +7569,9 @@
      * and the exception raised then error message print
      * and exit ruby process by Win32OLE itself.
      */
-    result = rb_rescue2(exec_callback, arg,
+    arg[0] = handler;
+    arg[1] = args;
+    result = rb_rescue2(exec_callback, (VALUE)arg,
 	                rescue_callback, Qnil,
 			rb_eException, (VALUE)0);
     if(TYPE(result) == T_HASH) {

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]