public
Description: ruby lang (www.ruby-lang.org) svn mirror
Homepage: http://svn.ruby-lang.org/repos/ruby/
Clone URL: git://github.com/juretta/ruby.git
* ext/win32ole/win32ole.c (EVENTSINK_Invoke): little refactoring.

* ext/win32ole/win32ole.c (EVENTSINK_GetIDsOfNames): return
  ITypeInfo::GetIDsOfNames().



git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@18133 
b2dd03c8-39d4-4d8f-98ff-823fe69b080e
suke (author)
Sat Jul 19 09:28:23 -0700 2008
commit  7af87f44473ebbc66c6f57faa040932ebcb3ce7a
tree    562c17d5b68aac7cdb8e5b07dd3c345db3872f2b
parent  d9017d05d71172c68e91637d1f4f506633f4c74d
...
 
 
 
 
 
 
 
1
2
3
...
1
2
3
4
5
6
7
8
9
10
0
@@ -1,3 +1,10 @@
0
+Sun Jul 20 01:23:24 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
0
+
0
+ * ext/win32ole/win32ole.c (EVENTSINK_Invoke): little refactoring.
0
+
0
+ * ext/win32ole/win32ole.c (EVENTSINK_GetIDsOfNames): return
0
+ ITypeInfo::GetIDsOfNames().
0
+
0
 Sat Jul 19 09:31:35 2008 Masaki Suketa <masaki.suketa@nifty.ne.jp>
0
 
0
   * ext/win32ole/win32ole.c (EVENTSINK_Invoke): little refactoring.
...
118
119
120
121
 
122
123
124
...
7353
7354
7355
7356
 
7357
7358
7359
7360
7361
7362
 
 
 
 
 
 
7363
7364
7365
...
7470
7471
7472
7473
7474
 
 
 
7475
7476
7477
...
7512
7513
7514
7515
 
7516
7517
7518
...
7554
7555
7556
7557
7558
7559
7560
7561
7562
...
7565
7566
7567
7568
 
 
 
7569
7570
7571
...
118
119
120
 
121
122
123
124
...
7353
7354
7355
 
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
...
7476
7477
7478
 
 
7479
7480
7481
7482
7483
7484
...
7519
7520
7521
 
7522
7523
7524
7525
...
7561
7562
7563
 
 
 
7564
7565
7566
...
7569
7570
7571
 
7572
7573
7574
7575
7576
7577
0
@@ -118,7 +118,7 @@
0
 
0
 #define WC2VSTR(x) ole_wc2vstr((x), TRUE)
0
 
0
-#define WIN32OLE_VERSION "1.2.5"
0
+#define WIN32OLE_VERSION "1.2.6"
0
 
0
 typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX)
0
     (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*);
0
@@ -7353,13 +7353,19 @@ STDMETHODIMP EVENTSINK_GetTypeInfo(
0
 }
0
 
0
 STDMETHODIMP EVENTSINK_GetIDsOfNames(
0
- PEVENTSINK pEV,
0
+ PEVENTSINK pEventSink,
0
     REFIID riid,
0
     OLECHAR **szNames,
0
     UINT cNames,
0
     LCID lcid,
0
     DISPID *pDispID
0
     ) {
0
+ ITypeInfo *pTypeInfo;
0
+ PIEVENTSINKOBJ pEV = (PIEVENTSINKOBJ)pEventSink;
0
+ pTypeInfo = pEV->pTypeInfo;
0
+ if (pTypeInfo) {
0
+ return pTypeInfo->lpVtbl->GetIDsOfNames(pTypeInfo, szNames, cNames, pDispID);
0
+ }
0
     return DISP_E_UNKNOWNNAME;
0
 }
0
 
0
@@ -7470,8 +7476,9 @@ ary2ptr_dispparams(VALUE ary, DISPPARAMS *pdispparams)
0
 static VALUE
0
 exec_callback(VALUE arg)
0
 {
0
- VALUE handler = rb_ary_entry(arg, 0);
0
- VALUE args = rb_ary_entry(arg, 1);
0
+ VALUE *parg = (VALUE *)arg;
0
+ VALUE handler = parg[0];
0
+ VALUE args = parg[1];
0
     return rb_apply(handler, rb_intern("call"), args);
0
 }
0
 
0
@@ -7512,7 +7519,7 @@ STDMETHODIMP EVENTSINK_Invoke(
0
     ITypeInfo *pTypeInfo;
0
     VARIANT *pvar;
0
     VALUE ary, obj, event, handler, args, outargv, ev, result;
0
- VALUE arg;
0
+ VALUE arg[2];
0
     VALUE is_outarg;
0
     BOOL is_default_handler = FALSE;
0
 
0
@@ -7554,9 +7561,6 @@ STDMETHODIMP EVENTSINK_Invoke(
0
   outargv = rb_ary_new();
0
         rb_ary_push(args, outargv);
0
     }
0
- arg = rb_ary_new();
0
- rb_ary_push(arg, handler);
0
- rb_ary_push(arg, args);
0
 
0
     /*
0
      * if exception raised in event callback,
0
@@ -7565,7 +7569,9 @@ STDMETHODIMP EVENTSINK_Invoke(
0
      * and the exception raised then error message print
0
      * and exit ruby process by Win32OLE itself.
0
      */
0
- result = rb_rescue2(exec_callback, arg,
0
+ arg[0] = handler;
0
+ arg[1] = args;
0
+ result = rb_rescue2(exec_callback, (VALUE)arg,
0
    rescue_callback, Qnil,
0
       rb_eException, (VALUE)0);
0
     if(TYPE(result) == T_HASH) {

Comments

    No one has commented yet.