cvs: php-src /ext/com_dotnet com_com.c com_handlers.c com_saproxy.c php_com_dotnet_internal.h
| From: | Rob Richards | Date: | Sun, 24 Dec 2006 12:32:35 +0000 |
| Subject: | cvs: php-src /ext/com_dotnet com_com.c com_handlers.c com_saproxy.c php_com_dotnet_internal.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-42334@lists.php.net to get a copy of this message | ||
rrichards Sun Dec 24 12:32:35 2006 UTC
Modified files:
/php-src/ext/com_dotnet com_com.c com_handlers.c com_saproxy.c
php_com_dotnet_internal.h
Log:
MFB: fix bug #33734 and related (Something strange with COM Object)
- caused by fix in com_handlers.c rev 1.22.2.5
http://cvs.php.net/viewvc.cgi/php-src/ext/com_dotnet/com_com.c?r1=1.20&r2=1.21&diff_format=u Index: php-src/ext/com_dotnet/com_com.c diff -u php-src/ext/com_dotnet/com_com.c:1.20 php-src/ext/com_dotnet/com_com.c:1.21 --- php-src/ext/com_dotnet/com_com.c:1.20 Fri Nov 17 11:41:13 2006 +++ php-src/ext/com_dotnet/com_com.c Sun Dec 24 12:32:35 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_com.c,v 1.20 2006/11/17 11:41:13 dmitry Exp $ */ +/* $Id: com_com.c,v 1.21 2006/12/24 12:32:35 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -338,7 +338,7 @@ /* Performs an Invoke on the given com object. * returns a failure code and creates an exception if there was an error */ HRESULT php_com_invoke_helper(php_com_dotnet_object *obj, DISPID id_member, - WORD flags, DISPPARAMS *disp_params, VARIANT *v, int silent TSRMLS_DC) + WORD flags, DISPPARAMS *disp_params, VARIANT *v, int silent, int allow_noarg TSRMLS_DC) { HRESULT hr; unsigned int arg_err; @@ -389,7 +389,7 @@ break; case DISP_E_BADPARAMCOUNT: - if ((disp_params->cArgs + disp_params->cNamedArgs == 0) && (flags == DISPATCH_PROPERTYGET)) { + if ((disp_params->cArgs + disp_params->cNamedArgs == 0) && (allow_noarg == 1)) { /* if getting a property and they are missing all parameters, * we want to create a proxy object for them; so lets not create an * exception here */ @@ -545,7 +545,7 @@ } /* this will create an exception if needed */ - hr = php_com_invoke_helper(obj, dispid, flags, &disp_params, v, 0 TSRMLS_CC); + hr = php_com_invoke_helper(obj, dispid, flags, &disp_params, v, 0, 0 TSRMLS_CC); /* release variants */ if (vargs) { @@ -583,7 +583,7 @@ int php_com_do_invoke_by_id(php_com_dotnet_object *obj, DISPID dispid, - WORD flags, VARIANT *v, int nargs, zval **args, int silent TSRMLS_DC) + WORD flags, VARIANT *v, int nargs, zval **args, int silent, int allow_noarg TSRMLS_DC) { DISPID altdispid; DISPPARAMS disp_params; @@ -612,7 +612,7 @@ } /* this will create an exception if needed */ - hr = php_com_invoke_helper(obj, dispid, flags, &disp_params, v, silent TSRMLS_CC); + hr = php_com_invoke_helper(obj, dispid, flags, &disp_params, v, silent, allow_noarg TSRMLS_CC); /* release variants */ if (vargs) { @@ -630,7 +630,7 @@ } int php_com_do_invoke(php_com_dotnet_object *obj, char *name, int namelen, - WORD flags, VARIANT *v, int nargs, zval **args TSRMLS_DC) + WORD flags, VARIANT *v, int nargs, zval **args, int allow_noarg TSRMLS_DC) { DISPID dispid; HRESULT hr; @@ -648,7 +648,7 @@ return FAILURE; } - return php_com_do_invoke_by_id(obj, dispid, flags, v, nargs, args, 0 TSRMLS_CC); + return php_com_do_invoke_by_id(obj, dispid, flags, v, nargs, args, 0, allow_noarg TSRMLS_CC); } /* {{{ proto string com_create_guid() http://cvs.php.net/viewvc.cgi/php-src/ext/com_dotnet/com_handlers.c?r1=1.41&r2=1.42&diff_format=u Index: php-src/ext/com_dotnet/com_handlers.c diff -u php-src/ext/com_dotnet/com_handlers.c:1.41 php-src/ext/com_dotnet/com_handlers.c:1.42 --- php-src/ext/com_dotnet/com_handlers.c:1.41 Sun Dec 24 10:02:00 2006 +++ php-src/ext/com_dotnet/com_handlers.c Sun Dec 24 12:32:35 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_handlers.c,v 1.41 2006/12/24 10:02:00 rrichards Exp $ */ +/* $Id: com_handlers.c,v 1.42 2006/12/24 12:32:35 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -49,7 +49,7 @@ convert_to_string_ex(&member); res = php_com_do_invoke(obj, Z_STRVAL_P(member), Z_STRLEN_P(member), - DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 0, NULL TSRMLS_CC); + DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 0, NULL, 1 TSRMLS_CC); if (res == SUCCESS) { php_com_zval_from_variant(return_value, &v, obj->code_page TSRMLS_CC); @@ -76,7 +76,7 @@ convert_to_string_ex(&member); if (SUCCESS == php_com_do_invoke(obj, Z_STRVAL_P(member), Z_STRLEN_P(member), - DISPATCH_PROPERTYPUT|DISPATCH_PROPERTYPUTREF, &v, 1, &value TSRMLS_CC)) { + DISPATCH_PROPERTYPUT|DISPATCH_PROPERTYPUTREF, &v, 1, &value, 0 TSRMLS_CC)) { VariantClear(&v); } } else { @@ -101,7 +101,7 @@ VariantInit(&v); if (SUCCESS == php_com_do_invoke_by_id(obj, DISPID_VALUE, - DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 1, &offset, 0 TSRMLS_CC)) { + DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 1, &offset, 0, 0 TSRMLS_CC)) { php_com_zval_from_variant(return_value, &v, obj->code_page TSRMLS_CC); VariantClear(&v); } @@ -140,7 +140,7 @@ VariantInit(&v); if (SUCCESS == php_com_do_invoke_by_id(obj, DISPID_VALUE, - DISPATCH_METHOD|DISPATCH_PROPERTYPUT, &v, 2, args, 0 TSRMLS_CC)) { + DISPATCH_METHOD|DISPATCH_PROPERTYPUT, &v, 2, args, 0, 0 TSRMLS_CC)) { VariantClear(&v); } } else if (V_ISARRAY(&obj->v)) { @@ -500,7 +500,7 @@ if (V_VT(&obj->v) == VT_DISPATCH) { if (SUCCESS != php_com_do_invoke_by_id(obj, DISPID_VALUE, - DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 0, NULL, 1 TSRMLS_CC)) { + DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 0, NULL, 1, 0 TSRMLS_CC)) { VariantCopy(&v, &obj->v); } } else { http://cvs.php.net/viewvc.cgi/php-src/ext/com_dotnet/com_saproxy.c?r1=1.19&r2=1.20&diff_format=u Index: php-src/ext/com_dotnet/com_saproxy.c diff -u php-src/ext/com_dotnet/com_saproxy.c:1.19 php-src/ext/com_dotnet/com_saproxy.c:1.20 --- php-src/ext/com_dotnet/com_saproxy.c:1.19 Sat Apr 29 18:45:29 2006 +++ php-src/ext/com_dotnet/com_saproxy.c Sun Dec 24 12:32:35 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_saproxy.c,v 1.19 2006/04/29 18:45:29 fmk Exp $ */ +/* $Id: com_saproxy.c,v 1.20 2006/12/24 12:32:35 rrichards Exp $ */ /* This module implements a SafeArray proxy which is used internally * by the engine when resolving multi-dimensional array accesses on @@ -120,7 +120,7 @@ res = php_com_do_invoke(proxy->obj, Z_STRVAL_P(proxy->indices[0]), Z_STRLEN_P(proxy->indices[0]), DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, - proxy->dimensions, args TSRMLS_CC); + proxy->dimensions, args, 0 TSRMLS_CC); if (res == SUCCESS) { php_com_zval_from_variant(return_value, &v, proxy->obj->code_page TSRMLS_CC); @@ -233,7 +233,7 @@ VariantInit(&v); if (SUCCESS == php_com_do_invoke(proxy->obj, Z_STRVAL_P(proxy->indices[0]), Z_STRLEN_P(proxy->indices[0]), DISPATCH_PROPERTYPUT, &v, proxy->dimensions + 1, - args TSRMLS_CC)) { + args, 0 TSRMLS_CC)) { VariantClear(&v); } http://cvs.php.net/viewvc.cgi/php-src/ext/com_dotnet/php_com_dotnet_internal.h?r1=1.19&r2=1.20&diff_format=u Index: php-src/ext/com_dotnet/php_com_dotnet_internal.h diff -u php-src/ext/com_dotnet/php_com_dotnet_internal.h:1.19 php-src/ext/com_dotnet/php_com_dotnet_internal.h:1.20 --- php-src/ext/com_dotnet/php_com_dotnet_internal.h:1.19 Sat Apr 29 18:45:29 2006 +++ php-src/ext/com_dotnet/php_com_dotnet_internal.h Sun Dec 24 12:32:35 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_com_dotnet_internal.h,v 1.19 2006/04/29 18:45:29 fmk Exp $ */ +/* $Id: php_com_dotnet_internal.h,v 1.20 2006/12/24 12:32:35 rrichards Exp $ */ #ifndef PHP_COM_DOTNET_INTERNAL_H #define PHP_COM_DOTNET_INTERNAL_H @@ -102,13 +102,13 @@ PHP_FUNCTION(com_get_active_object); HRESULT php_com_invoke_helper(php_com_dotnet_object *obj, DISPID id_member, - WORD flags, DISPPARAMS *disp_params, VARIANT *v, int silent TSRMLS_DC); + WORD flags, DISPPARAMS *disp_params, VARIANT *v, int silent, int allow_noarg TSRMLS_DC); HRESULT php_com_get_id_of_name(php_com_dotnet_object *obj, char *name, int namelen, DISPID *dispid TSRMLS_DC); int php_com_do_invoke_by_id(php_com_dotnet_object *obj, DISPID dispid, - WORD flags, VARIANT *v, int nargs, zval **args, int silent TSRMLS_DC); + WORD flags, VARIANT *v, int nargs, zval **args, int silent, int allow_noarg TSRMLS_DC); int php_com_do_invoke(php_com_dotnet_object *obj, char *name, int namelen, - WORD flags, VARIANT *v, int nargs, zval **args TSRMLS_DC); + WORD flags, VARIANT *v, int nargs, zval **args, int allow_noarg TSRMLS_DC); int php_com_do_invoke_byref(php_com_dotnet_object *obj, char *name, int namelen, WORD flags, VARIANT *v, int nargs, zval ***args TSRMLS_DC);
http://cvs.php.net/viewvc.cgi/php-src/ext/com_dotnet/com_com.c?r1=1.20&r2=1.21&diff_format=u Index: php-src/ext/com_dotnet/com_com.c diff -u php-src/ext/com_dotnet/com_com.c:1.20 php-src/ext/com_dotnet/com_com.c:1.21 --- php-src/ext/com_dotnet/com_com.c:1.20 Fri Nov 17 11:41:13 2006 +++ php-src/ext/com_dotnet/com_com.c Sun Dec 24 12:32:35 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_com.c,v 1.20 2006/11/17 11:41:13 dmitry Exp $ */ +/* $Id: com_com.c,v 1.21 2006/12/24 12:32:35 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -338,7 +338,7 @@ /* Performs an Invoke on the given com object. * returns a failure code and creates an exception if there was an error */ HRESULT php_com_invoke_helper(php_com_dotnet_object *obj, DISPID id_member, - WORD flags, DISPPARAMS *disp_params, VARIANT *v, int silent TSRMLS_DC) + WORD flags, DISPPARAMS *disp_params, VARIANT *v, int silent, int allow_noarg TSRMLS_DC) { HRESULT hr; unsigned int arg_err; @@ -389,7 +389,7 @@ break; case DISP_E_BADPARAMCOUNT: - if ((disp_params->cArgs + disp_params->cNamedArgs == 0) && (flags == DISPATCH_PROPERTYGET)) { + if ((disp_params->cArgs + disp_params->cNamedArgs == 0) && (allow_noarg == 1)) { /* if getting a property and they are missing all parameters, * we want to create a proxy object for them; so lets not create an * exception here */ @@ -545,7 +545,7 @@ } /* this will create an exception if needed */ - hr = php_com_invoke_helper(obj, dispid, flags, &disp_params, v, 0 TSRMLS_CC); + hr = php_com_invoke_helper(obj, dispid, flags, &disp_params, v, 0, 0 TSRMLS_CC); /* release variants */ if (vargs) { @@ -583,7 +583,7 @@ int php_com_do_invoke_by_id(php_com_dotnet_object *obj, DISPID dispid, - WORD flags, VARIANT *v, int nargs, zval **args, int silent TSRMLS_DC) + WORD flags, VARIANT *v, int nargs, zval **args, int silent, int allow_noarg TSRMLS_DC) { DISPID altdispid; DISPPARAMS disp_params; @@ -612,7 +612,7 @@ } /* this will create an exception if needed */ - hr = php_com_invoke_helper(obj, dispid, flags, &disp_params, v, silent TSRMLS_CC); + hr = php_com_invoke_helper(obj, dispid, flags, &disp_params, v, silent, allow_noarg TSRMLS_CC); /* release variants */ if (vargs) { @@ -630,7 +630,7 @@ } int php_com_do_invoke(php_com_dotnet_object *obj, char *name, int namelen, - WORD flags, VARIANT *v, int nargs, zval **args TSRMLS_DC) + WORD flags, VARIANT *v, int nargs, zval **args, int allow_noarg TSRMLS_DC) { DISPID dispid; HRESULT hr; @@ -648,7 +648,7 @@ return FAILURE; } - return php_com_do_invoke_by_id(obj, dispid, flags, v, nargs, args, 0 TSRMLS_CC); + return php_com_do_invoke_by_id(obj, dispid, flags, v, nargs, args, 0, allow_noarg TSRMLS_CC); } /* {{{ proto string com_create_guid() http://cvs.php.net/viewvc.cgi/php-src/ext/com_dotnet/com_handlers.c?r1=1.41&r2=1.42&diff_format=u Index: php-src/ext/com_dotnet/com_handlers.c diff -u php-src/ext/com_dotnet/com_handlers.c:1.41 php-src/ext/com_dotnet/com_handlers.c:1.42 --- php-src/ext/com_dotnet/com_handlers.c:1.41 Sun Dec 24 10:02:00 2006 +++ php-src/ext/com_dotnet/com_handlers.c Sun Dec 24 12:32:35 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_handlers.c,v 1.41 2006/12/24 10:02:00 rrichards Exp $ */ +/* $Id: com_handlers.c,v 1.42 2006/12/24 12:32:35 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -49,7 +49,7 @@ convert_to_string_ex(&member); res = php_com_do_invoke(obj, Z_STRVAL_P(member), Z_STRLEN_P(member), - DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 0, NULL TSRMLS_CC); + DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 0, NULL, 1 TSRMLS_CC); if (res == SUCCESS) { php_com_zval_from_variant(return_value, &v, obj->code_page TSRMLS_CC); @@ -76,7 +76,7 @@ convert_to_string_ex(&member); if (SUCCESS == php_com_do_invoke(obj, Z_STRVAL_P(member), Z_STRLEN_P(member), - DISPATCH_PROPERTYPUT|DISPATCH_PROPERTYPUTREF, &v, 1, &value TSRMLS_CC)) { + DISPATCH_PROPERTYPUT|DISPATCH_PROPERTYPUTREF, &v, 1, &value, 0 TSRMLS_CC)) { VariantClear(&v); } } else { @@ -101,7 +101,7 @@ VariantInit(&v); if (SUCCESS == php_com_do_invoke_by_id(obj, DISPID_VALUE, - DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 1, &offset, 0 TSRMLS_CC)) { + DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 1, &offset, 0, 0 TSRMLS_CC)) { php_com_zval_from_variant(return_value, &v, obj->code_page TSRMLS_CC); VariantClear(&v); } @@ -140,7 +140,7 @@ VariantInit(&v); if (SUCCESS == php_com_do_invoke_by_id(obj, DISPID_VALUE, - DISPATCH_METHOD|DISPATCH_PROPERTYPUT, &v, 2, args, 0 TSRMLS_CC)) { + DISPATCH_METHOD|DISPATCH_PROPERTYPUT, &v, 2, args, 0, 0 TSRMLS_CC)) { VariantClear(&v); } } else if (V_ISARRAY(&obj->v)) { @@ -500,7 +500,7 @@ if (V_VT(&obj->v) == VT_DISPATCH) { if (SUCCESS != php_com_do_invoke_by_id(obj, DISPID_VALUE, - DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 0, NULL, 1 TSRMLS_CC)) { + DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, 0, NULL, 1, 0 TSRMLS_CC)) { VariantCopy(&v, &obj->v); } } else { http://cvs.php.net/viewvc.cgi/php-src/ext/com_dotnet/com_saproxy.c?r1=1.19&r2=1.20&diff_format=u Index: php-src/ext/com_dotnet/com_saproxy.c diff -u php-src/ext/com_dotnet/com_saproxy.c:1.19 php-src/ext/com_dotnet/com_saproxy.c:1.20 --- php-src/ext/com_dotnet/com_saproxy.c:1.19 Sat Apr 29 18:45:29 2006 +++ php-src/ext/com_dotnet/com_saproxy.c Sun Dec 24 12:32:35 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: com_saproxy.c,v 1.19 2006/04/29 18:45:29 fmk Exp $ */ +/* $Id: com_saproxy.c,v 1.20 2006/12/24 12:32:35 rrichards Exp $ */ /* This module implements a SafeArray proxy which is used internally * by the engine when resolving multi-dimensional array accesses on @@ -120,7 +120,7 @@ res = php_com_do_invoke(proxy->obj, Z_STRVAL_P(proxy->indices[0]), Z_STRLEN_P(proxy->indices[0]), DISPATCH_METHOD|DISPATCH_PROPERTYGET, &v, - proxy->dimensions, args TSRMLS_CC); + proxy->dimensions, args, 0 TSRMLS_CC); if (res == SUCCESS) { php_com_zval_from_variant(return_value, &v, proxy->obj->code_page TSRMLS_CC); @@ -233,7 +233,7 @@ VariantInit(&v); if (SUCCESS == php_com_do_invoke(proxy->obj, Z_STRVAL_P(proxy->indices[0]), Z_STRLEN_P(proxy->indices[0]), DISPATCH_PROPERTYPUT, &v, proxy->dimensions + 1, - args TSRMLS_CC)) { + args, 0 TSRMLS_CC)) { VariantClear(&v); } http://cvs.php.net/viewvc.cgi/php-src/ext/com_dotnet/php_com_dotnet_internal.h?r1=1.19&r2=1.20&diff_format=u Index: php-src/ext/com_dotnet/php_com_dotnet_internal.h diff -u php-src/ext/com_dotnet/php_com_dotnet_internal.h:1.19 php-src/ext/com_dotnet/php_com_dotnet_internal.h:1.20 --- php-src/ext/com_dotnet/php_com_dotnet_internal.h:1.19 Sat Apr 29 18:45:29 2006 +++ php-src/ext/com_dotnet/php_com_dotnet_internal.h Sun Dec 24 12:32:35 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_com_dotnet_internal.h,v 1.19 2006/04/29 18:45:29 fmk Exp $ */ +/* $Id: php_com_dotnet_internal.h,v 1.20 2006/12/24 12:32:35 rrichards Exp $ */ #ifndef PHP_COM_DOTNET_INTERNAL_H #define PHP_COM_DOTNET_INTERNAL_H @@ -102,13 +102,13 @@ PHP_FUNCTION(com_get_active_object); HRESULT php_com_invoke_helper(php_com_dotnet_object *obj, DISPID id_member, - WORD flags, DISPPARAMS *disp_params, VARIANT *v, int silent TSRMLS_DC); + WORD flags, DISPPARAMS *disp_params, VARIANT *v, int silent, int allow_noarg TSRMLS_DC); HRESULT php_com_get_id_of_name(php_com_dotnet_object *obj, char *name, int namelen, DISPID *dispid TSRMLS_DC); int php_com_do_invoke_by_id(php_com_dotnet_object *obj, DISPID dispid, - WORD flags, VARIANT *v, int nargs, zval **args, int silent TSRMLS_DC); + WORD flags, VARIANT *v, int nargs, zval **args, int silent, int allow_noarg TSRMLS_DC); int php_com_do_invoke(php_com_dotnet_object *obj, char *name, int namelen, - WORD flags, VARIANT *v, int nargs, zval **args TSRMLS_DC); + WORD flags, VARIANT *v, int nargs, zval **args, int allow_noarg TSRMLS_DC); int php_com_do_invoke_byref(php_com_dotnet_object *obj, char *name, int namelen, WORD flags, VARIANT *v, int nargs, zval ***args TSRMLS_DC);