From 9670542af57f632460519add916f8e1fd43df5a8 Mon Sep 17 00:00:00 2001 From: suke Date: Tue, 5 Aug 2014 10:31:00 +0000 Subject: * ext/win32ole/win32ole.c (ole_invoke): skip VariantClear when argument is VT_RECORD variant. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47068 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ ext/win32ole/win32ole.c | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 588c7ad261..dd84e307a4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Aug 5 19:27:59 2014 Masaki Suketa + + * ext/win32ole/win32ole.c (ole_invoke): skip VariantClear when + argument is VT_RECORD variant. + Tue Aug 5 15:52:51 2014 SHIBATA Hiroshi * gems/bundled_gems: Upgrade to test-unit-3.0.0 and minitest-5.4.0. diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c index 8f5da746be..42144489cc 100644 --- a/ext/win32ole/win32ole.c +++ b/ext/win32ole/win32ole.c @@ -63,7 +63,7 @@ const IID IID_IMultiLanguage2 = {0xDCCFC164, 0x2B38, 0x11d2, {0xB7, 0xEC, 0x00, #define WC2VSTR(x) ole_wc2vstr((x), TRUE) -#define WIN32OLE_VERSION "1.7.2" +#define WIN32OLE_VERSION "1.7.3" typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX) (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); @@ -3586,7 +3586,9 @@ ole_invoke(int argc, VALUE *argv, VALUE self, USHORT wFlags, BOOL is_bracket) &excepinfo, &argErr); for(i = cNamedArgs; i < op.dp.cArgs; i++) { n = op.dp.cArgs - i + cNamedArgs - 1; - VariantClear(&op.dp.rgvarg[n]); + if (V_VT(&op.dp.rgvarg[n]) != VT_RECORD) { + VariantClear(&op.dp.rgvarg[n]); + } } } } -- cgit v1.2.3