* 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
This commit is contained in:
suke 2014-08-05 10:31:00 +00:00
Родитель e3c74b2912
Коммит 9670542af5
2 изменённых файлов: 9 добавлений и 2 удалений

Просмотреть файл

@ -1,3 +1,8 @@
Tue Aug 5 19:27:59 2014 Masaki Suketa <masaki.suketa@nifty.ne.jp>
* ext/win32ole/win32ole.c (ole_invoke): skip VariantClear when
argument is VT_RECORD variant.
Tue Aug 5 15:52:51 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com> Tue Aug 5 15:52:51 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
* gems/bundled_gems: Upgrade to test-unit-3.0.0 and minitest-5.4.0. * gems/bundled_gems: Upgrade to test-unit-3.0.0 and minitest-5.4.0.

Просмотреть файл

@ -63,7 +63,7 @@ const IID IID_IMultiLanguage2 = {0xDCCFC164, 0x2B38, 0x11d2, {0xB7, 0xEC, 0x00,
#define WC2VSTR(x) ole_wc2vstr((x), TRUE) #define WC2VSTR(x) ole_wc2vstr((x), TRUE)
#define WIN32OLE_VERSION "1.7.2" #define WIN32OLE_VERSION "1.7.3"
typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX) typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX)
(REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*);
@ -3586,10 +3586,12 @@ ole_invoke(int argc, VALUE *argv, VALUE self, USHORT wFlags, BOOL is_bracket)
&excepinfo, &argErr); &excepinfo, &argErr);
for(i = cNamedArgs; i < op.dp.cArgs; i++) { for(i = cNamedArgs; i < op.dp.cArgs; i++) {
n = op.dp.cArgs - i + cNamedArgs - 1; n = op.dp.cArgs - i + cNamedArgs - 1;
if (V_VT(&op.dp.rgvarg[n]) != VT_RECORD) {
VariantClear(&op.dp.rgvarg[n]); VariantClear(&op.dp.rgvarg[n]);
} }
} }
} }
}
} }
/* clear dispatch parameter */ /* clear dispatch parameter */