From b528261ad821d84b6a392d9497cea6f199cba307 Mon Sep 17 00:00:00 2001 From: suke Date: Fri, 14 Sep 2007 13:25:44 +0000 Subject: * ext/win32ole/win32ole.c (fev_unadvise): no needs to reset event handlers. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ ext/win32ole/win32ole.c | 8 +++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5062efe67f..24adf6f990 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Sep 14 22:20:01 2007 Masaki Suketa + + * ext/win32ole/win32ole.c (fev_unadvise): no needs to reset + event handlers. + Fri Sep 14 17:28:32 2007 Koichi Sasada * test/ruby/test_io.rb: tests which cause SEGV should not be diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c index 7bdd459a03..3aa67bd112 100644 --- a/ext/win32ole/win32ole.c +++ b/ext/win32ole/win32ole.c @@ -116,7 +116,7 @@ #define WC2VSTR(x) ole_wc2vstr((x), TRUE) -#define WIN32OLE_VERSION "1.0.9" +#define WIN32OLE_VERSION "1.1.0" typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX) (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); @@ -7562,13 +7562,11 @@ fev_unadvise(VALUE self) struct oleeventdata *poleev; Data_Get_Struct(self, struct oleeventdata, poleev); if (poleev->pConnectionPoint) { + ole_msg_loop(); + evs_delete(poleev->event_id); poleev->pConnectionPoint->lpVtbl->Unadvise(poleev->pConnectionPoint, poleev->dwCookie); OLE_RELEASE(poleev->pConnectionPoint); poleev->pConnectionPoint = NULL; - - rb_ivar_set(self, id_events, rb_ary_new()); - evs_delete(poleev->event_id); - ole_msg_loop(); } return Qnil; } -- cgit v1.2.3