diff options
-rw-r--r-- | ext/com/COM.c | 9 | ||||
-rw-r--r-- | ext/rpc/com/com_wrapper.c | 9 |
2 files changed, 18 insertions, 0 deletions
diff --git a/ext/com/COM.c b/ext/com/COM.c index 0063f426b1..aeae84ddcf 100644 --- a/ext/com/COM.c +++ b/ext/com/COM.c @@ -741,6 +741,15 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval ** } } + /* return a single element if next() was called without count */ + if((arg_count == 0) && (count == 1)) + { + long index[] = {1}; + + SafeArrayGetElement(pSA, index, var_result); + SafeArrayDestroy(pSA); + } + return SUCCESS; } else if(C_HASENUM(obj) && strstr(Z_STRVAL_P(function_name), "reset")) diff --git a/ext/rpc/com/com_wrapper.c b/ext/rpc/com/com_wrapper.c index 0063f426b1..aeae84ddcf 100644 --- a/ext/rpc/com/com_wrapper.c +++ b/ext/rpc/com/com_wrapper.c @@ -741,6 +741,15 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval ** } } + /* return a single element if next() was called without count */ + if((arg_count == 0) && (count == 1)) + { + long index[] = {1}; + + SafeArrayGetElement(pSA, index, var_result); + SafeArrayDestroy(pSA); + } + return SUCCESS; } else if(C_HASENUM(obj) && strstr(Z_STRVAL_P(function_name), "reset")) |