summaryrefslogtreecommitdiff
path: root/ext/win32ole
diff options
context:
space:
mode:
authorsuke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-08-19 07:53:27 +0000
committersuke <suke@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-08-19 07:53:27 +0000
commit0c2571d62116fb79263627d056387e88afbcc34a (patch)
tree62ca0f24cc5b3d62fa63805fe41f63809725abe7 /ext/win32ole
parentddf79e9b6d789cc7133e9635ff5db1b3f3cd6e6c (diff)
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.c15
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" */