wez Thu Jul 29 10:06:24 2004 EDT
Modified files:
/php-src/ext/com_dotnet com_handlers.c com_wrapper.c
Log:
Fix my favourite call user func mistake
http://cvs.php.net/diff.php/php-src/ext/com_dotnet/com_handlers.c?r1=1.25&r2=1.26&ty=u
Index: php-src/ext/com_dotnet/com_handlers.c
diff -u php-src/ext/com_dotnet/com_handlers.c:1.25
php-src/ext/com_dotnet/com_handlers.c:1.26
--- php-src/ext/com_dotnet/com_handlers.c:1.25 Tue Jul 27 18:17:00 2004
+++ php-src/ext/com_dotnet/com_handlers.c Thu Jul 29 10:06:24 2004
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_handlers.c,v 1.25 2004/07/27 22:17:00 wez Exp $ */
+/* $Id: com_handlers.c,v 1.26 2004/07/29 14:06:24 wez Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -321,7 +321,7 @@
f.handler = PHP_FN(com_method_handler);
fptr = &f;
-
+
if (obj->typeinfo) {
/* look for byref params */
ITypeComp *comp;
@@ -524,7 +524,7 @@
php_com_dotnet_object *obj;
VARIANT v;
VARTYPE vt = VT_EMPTY;
-
+
if (should_free) {
zval_dtor(writeobj);
}
@@ -535,7 +535,6 @@
VariantInit(&v);
if (V_VT(&obj->v) == VT_DISPATCH) {
-
if (!obj->have_default_bind && !com_get_default_binding(obj
TSRMLS_CC)) {
return FAILURE;
}
@@ -561,9 +560,11 @@
case IS_STRING:
vt = VT_BSTR;
break;
+ default:
+ ;
}
- if (vt != VT_EMPTY) {
+ if (vt != VT_EMPTY && vt != V_VT(&v)) {
VariantChangeType(&v, &v, 0, vt);
}
http://cvs.php.net/diff.php/php-src/ext/com_dotnet/com_wrapper.c?r1=1.6&r2=1.7&ty=u
Index: php-src/ext/com_dotnet/com_wrapper.c
diff -u php-src/ext/com_dotnet/com_wrapper.c:1.6
php-src/ext/com_dotnet/com_wrapper.c:1.7
--- php-src/ext/com_dotnet/com_wrapper.c:1.6 Thu Jul 29 02:19:27 2004
+++ php-src/ext/com_dotnet/com_wrapper.c Thu Jul 29 10:06:24 2004
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: com_wrapper.c,v 1.6 2004/07/29 06:19:27 wez Exp $ */
+/* $Id: com_wrapper.c,v 1.7 2004/07/29 14:06:24 wez Exp $ */
/* This module exports a PHP object as a COM object by wrapping it
* using IDispatchEx */
@@ -90,7 +90,7 @@
php_dispatchex *disp = (php_dispatchex*)This; \
trace(" PHP:%s %s\n", Z_OBJCE_P(disp->object)->name, methname); \
if (tsrm_thread_id() != disp->engine_thread) \
- return E_UNEXPECTED;
+ return RPC_E_WRONG_THREAD;
static HRESULT STDMETHODCALLTYPE disp_queryinterface(
@@ -287,7 +287,8 @@
ALLOC_INIT_ZVAL(zarg);
php_com_wrap_variant(zarg, arg, COMG(code_page)
TSRMLS_CC);
- params[i] = &zarg;
+ params[i] = (zval**)emalloc(sizeof(zval**));
+ *params[i] = zarg;
}
}
@@ -320,8 +321,10 @@
/* release arguments */
if (params) {
- for (i = 0; i < pdp->cArgs; i++)
+ for (i = 0; i < pdp->cArgs; i++) {
zval_ptr_dtor(params[i]);
+ efree(params[i]);
+ }
efree(params);
}
@@ -625,8 +628,9 @@
{
php_dispatchex *disp = NULL;
- if (Z_TYPE_P(val) != IS_OBJECT)
+ if (Z_TYPE_P(val) != IS_OBJECT) {
return NULL;
+ }
if (php_com_is_valid_object(val TSRMLS_CC)) {
/* pass back its IDispatch directly */
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php