diff options
author | suke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-08-19 07:53:27 +0000 |
---|---|---|
committer | suke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-08-19 07:53:27 +0000 |
commit | 0c2571d62116fb79263627d056387e88afbcc34a (patch) | |
tree | 62ca0f24cc5b3d62fa63805fe41f63809725abe7 /ext/win32ole | |
parent | ddf79e9b6d789cc7133e9635ff5db1b3f3cd6e6c (diff) | |
download | ruby-0c2571d62116fb79263627d056387e88afbcc34a.tar.gz |
accept hash argument of Symbol key.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10750 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/win32ole')
-rw-r--r-- | ext/win32ole/win32ole.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c index 0381bb2003..8778d70305 100644 --- a/ext/win32ole/win32ole.c +++ b/ext/win32ole/win32ole.c @@ -79,7 +79,7 @@ #define WC2VSTR(x) ole_wc2vstr((x), TRUE) -#define WIN32OLE_VERSION "0.7.9" +#define WIN32OLE_VERSION "0.8.0" typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX) (REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); @@ -2228,11 +2228,11 @@ hash2named_arg(VALUE pair, struct oleparam* pOp) VALUE key, value; index = pOp->dp.cNamedArgs; - /*------------------------------------- - the data-type of key must be String - ---------------------------------------*/ + /*--------------------------------------------- + the data-type of key must be String or Symbol + -----------------------------------------------*/ key = rb_ary_entry(pair, 0); - if(TYPE(key) != T_STRING) { + if(TYPE(key) != T_STRING && TYPE(key) != T_SYMBOL) { /* clear name of dispatch parameters */ for(i = 1; i < index + 1; i++) { SysFreeString(pOp->pNamedArgs[i]); @@ -2242,7 +2242,10 @@ hash2named_arg(VALUE pair, struct oleparam* pOp) VariantClear(&(pOp->dp.rgvarg[i])); } /* raise an exception */ - Check_Type(key, T_STRING); + rb_raise(rb_eTypeError, "wrong argument type (expected String or Symbol)"); + } + if (TYPE(key) == T_SYMBOL) { + key = rb_str_new2(rb_id2name(SYM2ID(key))); } /* pNamedArgs[0] is <method name>, so "index + 1" */ |