diff options
author | suke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-11-05 00:30:57 +0000 |
---|---|---|
committer | suke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-11-05 00:30:57 +0000 |
commit | 8930a4257d5295886f4ad8b3a018a23bd89ae515 (patch) | |
tree | ffa9c4bd2c8bbe12f116e9952351abde707a71c9 /ext/win32ole | |
parent | e7535c6eaa87813d6ce6591c200f1fce7ee16ae2 (diff) |
* ext/win32ole/win32ole_error.c: add WIN32OLEQueryInterfaceError.
* ext/win32ole/win32ole_error.h: ditto.
* ext/win32ole/win32ole.c(typeinfo_from_ole): raise WIN32OLEQueryInterfaceError in ole_methods.
* ext/win32ole/win32ole_method.c(ole_methods_from_typeinfo): ditto.
M ext/win32ole/win32ole.c
M ext/win32ole/win32ole_error.c
M ext/win32ole/win32ole_error.h
M ext/win32ole/win32ole_method.c
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60657 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/win32ole')
-rw-r--r-- | ext/win32ole/win32ole.c | 4 | ||||
-rw-r--r-- | ext/win32ole/win32ole_error.c | 1 | ||||
-rw-r--r-- | ext/win32ole/win32ole_error.h | 1 | ||||
-rw-r--r-- | ext/win32ole/win32ole_method.c | 4 |
4 files changed, 6 insertions, 4 deletions
diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c index 960c03da1c..47dc558671 100644 --- a/ext/win32ole/win32ole.c +++ b/ext/win32ole/win32ole.c @@ -3397,7 +3397,7 @@ typeinfo_from_ole(struct oledata *pole, ITypeInfo **ppti) HRESULT hr = pole->pDispatch->lpVtbl->GetTypeInfo(pole->pDispatch, 0, lcid, &pTypeInfo); if(FAILED(hr)) { - ole_raise(hr, rb_eRuntimeError, "failed to GetTypeInfo"); + ole_raise(hr, eWIN32OLEQueryInterfaceError, "failed to GetTypeInfo"); } hr = pTypeInfo->lpVtbl->GetDocumentation(pTypeInfo, -1, @@ -3407,7 +3407,7 @@ typeinfo_from_ole(struct oledata *pole, ITypeInfo **ppti) hr = pTypeInfo->lpVtbl->GetContainingTypeLib(pTypeInfo, &pTypeLib, &i); OLE_RELEASE(pTypeInfo); if (FAILED(hr)) { - ole_raise(hr, rb_eRuntimeError, "failed to GetContainingTypeLib"); + ole_raise(hr, eWIN32OLEQueryInterfaceError, "failed to GetContainingTypeLib"); } count = pTypeLib->lpVtbl->GetTypeInfoCount(pTypeLib); for (i = 0; i < count; i++) { diff --git a/ext/win32ole/win32ole_error.c b/ext/win32ole/win32ole_error.c index 62e69b186c..022527617e 100644 --- a/ext/win32ole/win32ole_error.c +++ b/ext/win32ole/win32ole_error.c @@ -80,4 +80,5 @@ Init_win32ole_error(void) * */ eWIN32OLERuntimeError = rb_define_class("WIN32OLERuntimeError", rb_eRuntimeError); + eWIN32OLEQueryInterfaceError = rb_define_class("WIN32OLEQueryInterfaceError", eWIN32OLERuntimeError); } diff --git a/ext/win32ole/win32ole_error.h b/ext/win32ole/win32ole_error.h index e0eee0ecf9..296eb101ad 100644 --- a/ext/win32ole/win32ole_error.h +++ b/ext/win32ole/win32ole_error.h @@ -2,6 +2,7 @@ #define WIN32OLE_ERROR_H 1 VALUE eWIN32OLERuntimeError; +VALUE eWIN32OLEQueryInterfaceError; NORETURN(PRINTF_ARGS(void ole_raise(HRESULT hr, VALUE ecs, const char *fmt, ...), 3, 4)); void Init_win32ole_error(void); diff --git a/ext/win32ole/win32ole_method.c b/ext/win32ole/win32ole_method.c index 381c1cbbd3..f2578072d2 100644 --- a/ext/win32ole/win32ole_method.c +++ b/ext/win32ole/win32ole_method.c @@ -119,7 +119,7 @@ ole_methods_from_typeinfo(ITypeInfo *pTypeInfo, int mask) VALUE methods = rb_ary_new(); hr = OLE_GET_TYPEATTR(pTypeInfo, &pTypeAttr); if (FAILED(hr)) { - ole_raise(hr, eWIN32OLERuntimeError, "failed to GetTypeAttr"); + ole_raise(hr, eWIN32OLEQueryInterfaceError, "failed to GetTypeAttr"); } ole_methods_sub(0, pTypeInfo, methods, mask); @@ -179,7 +179,7 @@ ole_methods_sub(ITypeInfo *pOwnerTypeInfo, ITypeInfo *pTypeInfo, VALUE methods, WORD i; hr = OLE_GET_TYPEATTR(pTypeInfo, &pTypeAttr); if (FAILED(hr)) { - ole_raise(hr, eWIN32OLERuntimeError, "failed to GetTypeAttr"); + ole_raise(hr, eWIN32OLEQueryInterfaceError, "failed to GetTypeAttr"); } for(i = 0; i < pTypeAttr->cFuncs; i++) { hr = pTypeInfo->lpVtbl->GetFuncDesc(pTypeInfo, i, &pFuncDesc); |