phanto Mon Feb 10 15:58:53 2003 EDT Modified files: /php4/ext/rpc/com com.c com_wrapper.c conversion.c variant.c variant.h Log: a bunch of fixes
Index: php4/ext/rpc/com/com.c diff -u php4/ext/rpc/com/com.c:1.19 php4/ext/rpc/com/com.c:1.20 --- php4/ext/rpc/com/com.c:1.19 Mon Feb 10 15:30:23 2003 +++ php4/ext/rpc/com/com.c Mon Feb 10 15:58:53 2003 @@ -36,13 +36,13 @@ static int com_ctor(rpc_string, void **, int , zval ***); static int com_dtor(void *); static int com_describe(rpc_string, void *, char **, unsigned char **); -static int com_call(rpc_string, void **, zval *, int, zval ***); -static int com_get(rpc_string, zval *, void **); -static int com_set(rpc_string, zval *, void **); -static int com_compare(void **, void **); -static int com_has_property(rpc_string, void **); -static int com_unset_property(rpc_string, void **); -static int com_get_properties(HashTable **, void **); +static int com_call(rpc_string, void *, zval *, int, zval ***); +static int com_get(rpc_string, zval *, void *); +static int com_set(rpc_string, zval *, void *); +static int com_compare(void *, void *); +static int com_has_property(rpc_string, void *); +static int com_unset_property(rpc_string, void *); +static int com_get_properties(HashTable **, void *); static PHP_INI_MH(com_typelib_file_change); @@ -216,13 +216,21 @@ switch (type) { case CLASS: { - OLECHAR *olestr; + if (hash.str != NULL) { + OLECHAR *olestr; - StringFromCLSID((CLSID *) hash.str, &olestr); - name->str = php_OLECHAR_to_char(olestr, &(name->len), CP_ACP, TRUE); - CoTaskMemFree(olestr); + StringFromCLSID((CLSID *) hash.str, &olestr); + name->str = php_OLECHAR_to_char(olestr, +&(name->len), CP_ACP, TRUE); + CoTaskMemFree(olestr); - return SUCCESS; + return SUCCESS; + } else { + comval *obj = (comval *) data; + + /* try to figure out classname */ + + return FAILURE; + } } case METHOD: @@ -620,9 +628,8 @@ return retval; } -static int com_call(rpc_string method_name, void **data, zval *return_value, int num_args, zval **args[]) +static int com_call(rpc_string method_name, void *data, zval *return_value, int +num_args, zval **args[]) { - DISPID dispid; DISPPARAMS dispparams; HRESULT hr; OLECHAR *funcname = NULL; @@ -630,17 +637,15 @@ VARIANT result; int current_arg, current_variant; char *ErrString = NULL; - TSRMLS_FETCH(); /* if the length of the name is 0, we are dealing with a pointer to a dispid */ assert(method_name.len == 0); - dispid = *(DISPID*)method_name.str; variant_args = num_args ? (VARIANT *) emalloc(sizeof(VARIANT) * num_args) : NULL; for (current_arg = 0; current_arg < num_args; current_arg++) { current_variant = num_args - current_arg - 1; - php_zval_to_variant(*args[current_arg], &variant_args[current_variant], C_CODEPAGE((comval *) *data)); + php_zval_to_variant(*args[current_arg], +&variant_args[current_variant], C_CODEPAGE((comval *) data)); } dispparams.rgvarg = variant_args; @@ -650,7 +655,7 @@ VariantInit(&result); - hr = php_COM_invoke((comval *) *data, dispid, DISPATCH_METHOD|DISPATCH_PROPERTYGET, &dispparams, &result, &ErrString); + hr = php_COM_invoke((comval *) data, *(DISPID*)method_name.str, +DISPATCH_METHOD|DISPATCH_PROPERTYGET, &dispparams, &result, &ErrString); for (current_arg=0;current_arg<num_args;current_arg++) { /* don't release IDispatch pointers as they are used afterwards */ @@ -670,45 +675,26 @@ error_message = php_COM_error_message(hr); if (ErrString) { - php_error_docref(NULL TSRMLS_CC, E_WARNING,"Invoke() failed: %s %s", error_message, ErrString); + rpc_error(E_WARNING,"Invoke() failed: %s %s", error_message, +ErrString); efree(ErrString); } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING,"Invoke() failed: %s", error_message); + rpc_error(E_WARNING,"Invoke() failed: %s", error_message); } LocalFree(error_message); return FAILURE; } - RETVAL_VARIANT(&result, C_CODEPAGE((comval *) *data)); + RETVAL_VARIANT(&result, C_CODEPAGE((comval *) data)); return SUCCESS; } -static int com_get(rpc_string property_name, zval *return_value, void **data) +static int com_get(rpc_string property_name, zval *return_value, void *data) { char *ErrString = NULL; VARIANT *result; - OLECHAR *propname; - DISPID dispid; DISPPARAMS dispparams; HRESULT hr; - TSRMLS_FETCH(); - - /* obtain property handler */ - propname = php_char_to_OLECHAR(property_name.str, property_name.len, CP_ACP, FALSE); - - if (FAILED(hr = php_COM_get_ids_of_names((comval *) *data, propname, &dispid))) { - char *error_message; - - efree(propname); - error_message = php_COM_error_message(hr); - rpc_error(E_WARNING,"Unable to lookup %s: %s", property_name.str, error_message); - LocalFree(error_message); - - return FAILURE; - } - - efree(propname); result = (VARIANT *) emalloc(sizeof(VARIANT)); VariantInit(result); @@ -716,7 +702,7 @@ dispparams.cArgs = 0; dispparams.cNamedArgs = 0; - if (FAILED(hr = php_COM_invoke((comval *) data, dispid, DISPATCH_PROPERTYGET, &dispparams, result, &ErrString))) { + if (FAILED(hr = php_COM_invoke((comval *) data, *((DISPID *) +property_name.str), DISPATCH_PROPERTYGET, &dispparams, result, &ErrString))) { char *error_message; efree(result); @@ -732,51 +718,43 @@ return FAILURE; } - RETVAL_VARIANT(result, C_CODEPAGE((comval *) *data)); + if (V_VT(result) == VT_DISPATCH) { + RETVAL_VARIANT(result, C_CODEPAGE((comval *) data)); + } else { + comval *foo = (comval *) data; + php_variant_to_zval(result, return_value, C_CODEPAGE(foo)); + VariantClear(result); + } + + efree(result); return SUCCESS; } -static int com_set(rpc_string property_name, zval *value, void **data) +static int com_set(rpc_string property_name, zval *value, void *data) { HRESULT hr; - OLECHAR *propname; - DISPID dispid, mydispid = DISPID_PROPERTYPUT; + DISPID mydispid = DISPID_PROPERTYPUT; DISPPARAMS dispparams; VARIANT *var; char *error_message, *ErrString = NULL; - TSRMLS_FETCH(); - - /* obtain property handler */ - propname = php_char_to_OLECHAR(property_name.str, property_name.len, CP_ACP, FALSE); - - if (FAILED(hr = php_COM_get_ids_of_names((comval *) *data, propname, &dispid))) { - error_message = php_COM_error_message(hr); - php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unable to lookup %s: %s", property_name.str, error_message); - LocalFree(error_message); - efree(propname); - - return FAILURE; - } - - efree(propname); var = (VARIANT *) emalloc(sizeof(VARIANT)); VariantInit(var); - php_zval_to_variant(value, var, C_CODEPAGE((comval *) *data)); + php_zval_to_variant(value, var, C_CODEPAGE((comval *) data)); dispparams.rgvarg = var; dispparams.rgdispidNamedArgs = &mydispid; dispparams.cArgs = 1; dispparams.cNamedArgs = 1; - if (FAILED(hr = php_COM_invoke((comval *) *data, dispid, DISPATCH_PROPERTYPUT, &dispparams, NULL, &ErrString))) { + if (FAILED(hr = php_COM_invoke((comval *) data, *(DISPID*)property_name.str, +DISPATCH_PROPERTYPUT, &dispparams, NULL, &ErrString))) { error_message = php_COM_error_message(hr); if (ErrString) { - php_error_docref(NULL TSRMLS_CC, E_WARNING,"PropPut() failed: %s %s", error_message, ErrString); + rpc_error(E_WARNING,"PropPut() failed: %s %s", error_message, +ErrString); efree(ErrString); } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING,"PropPut() failed: %s", error_message); + rpc_error(E_WARNING,"PropPut() failed: %s", error_message); } LocalFree(error_message); VariantClear(var); @@ -792,22 +770,22 @@ return SUCCESS; } -static int com_compare(void **data1, void **data2) +static int com_compare(void *data1, void *data2) { return SUCCESS; } -static int com_has_property(rpc_string property_name, void **data) +static int com_has_property(rpc_string property_name, void *data) { return SUCCESS; } -static int com_unset_property(rpc_string property_name, void **data) +static int com_unset_property(rpc_string property_name, void *data) { return SUCCESS; } -static int com_get_properties(HashTable **properties, void **data) +static int com_get_properties(HashTable **properties, void *data) { return SUCCESS; } @@ -819,13 +797,11 @@ Increases the reference counter on a COM object */ ZEND_FUNCTION(com_addref) { - zval *object = getThis(); + zval *object; rpc_internal *intern; - if (object == NULL) { - zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &object, com_class_entry); - } else { - zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ""); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", +&object, com_class_entry) != SUCCESS) { + return; } if (GET_INTERNAL_EX(intern, object) != SUCCESS) { @@ -840,13 +816,11 @@ Releases a COM object */ ZEND_FUNCTION(com_release) { - zval *object = getThis(); + zval *object; rpc_internal *intern; - if (object == NULL) { - zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &object, com_class_entry); - } else { - zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ""); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", +&object, com_class_entry) != SUCCESS) { + return; } if (GET_INTERNAL_EX(intern, object) != SUCCESS) { @@ -859,15 +833,13 @@ PHP_FUNCTION(com_next) { - zval *object = getThis(); + zval *object; rpc_internal *intern; comval *obj; unsigned long count = 1; - if (object == NULL) { - zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|l", &object, com_class_entry, &count); - } else { - zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &count); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|l", +&object, com_class_entry, &count) != SUCCESS) { + return; } if (GET_INTERNAL_EX(intern, object) != SUCCESS) { @@ -921,7 +893,7 @@ efree(result); error_message = php_COM_error_message(hr); - php_error_docref(NULL TSRMLS_CC, E_WARNING,"IEnumVariant::Next() failed: %s", error_message); + rpc_error(E_WARNING,"IEnumVariant::Next() failed: %s", +error_message); efree(error_message); RETURN_NULL(); @@ -968,14 +940,12 @@ PHP_FUNCTION(com_reset) { - zval *object = getThis(); + zval *object; rpc_internal *intern; comval *obj; - if (object == NULL) { - zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &object, com_class_entry); - } else { - zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ""); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", +&object, com_class_entry) != SUCCESS) { + return; } if (GET_INTERNAL_EX(intern, object) != SUCCESS) { @@ -989,7 +959,7 @@ if (FAILED(hr = C_ENUMVARIANT_VT(obj)->Reset(C_ENUMVARIANT(obj)))) { char *error_message = php_COM_error_message(hr); - php_error_docref(NULL TSRMLS_CC, E_WARNING,"IEnumVariant::Next() failed: %s", error_message); + rpc_error(E_WARNING,"IEnumVariant::Next() failed: %s", +error_message); efree(error_message); RETURN_FALSE; @@ -1004,15 +974,13 @@ PHP_FUNCTION(com_skip) { - zval *object = getThis(); + zval *object; rpc_internal *intern; comval *obj; unsigned long count = 1; - if (object == NULL) { - zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|l", &object, com_class_entry, &count); - } else { - zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &count); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|l", +&object, com_class_entry, &count) != SUCCESS) { + return; } if (GET_INTERNAL_EX(intern, object) != SUCCESS) { @@ -1026,7 +994,7 @@ if (FAILED(hr = C_ENUMVARIANT_VT(obj)->Skip(C_ENUMVARIANT(obj), count))) { char *error_message = php_COM_error_message(hr); - php_error_docref(NULL TSRMLS_CC, E_WARNING,"IEnumVariant::Next() failed: %s", error_message); + rpc_error(E_WARNING,"IEnumVariant::Next() failed: %s", +error_message); efree(error_message); RETURN_FALSE; } @@ -1042,13 +1010,11 @@ Grabs an IEnumVariant */ ZEND_FUNCTION(com_isenum) { - zval *object = getThis(); + zval *object; rpc_internal *intern; - if (object == NULL) { - zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O", &object, com_class_entry); - } else { - zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ""); + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", +&object, com_class_entry) != SUCCESS) { + return; } if (GET_INTERNAL_EX(intern, object) != SUCCESS) { Index: php4/ext/rpc/com/com_wrapper.c diff -u php4/ext/rpc/com/com_wrapper.c:1.88 php4/ext/rpc/com/com_wrapper.c:1.89 --- php4/ext/rpc/com/com_wrapper.c:1.88 Mon Feb 10 08:13:27 2003 +++ php4/ext/rpc/com/com_wrapper.c Mon Feb 10 15:58:53 2003 @@ -18,7 +18,7 @@ | Wez Furlong <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: com_wrapper.c,v 1.88 2003/02/10 13:13:27 wez Exp $ */ +/* $Id: com_wrapper.c,v 1.89 2003/02/10 20:58:53 phanto Exp $ */ /* * This module implements support for COM components that support the IDispatch * interface. Both local (COM) and remote (DCOM) components can be accessed. @@ -880,7 +880,7 @@ /* Oops, it already exists. No problem if it is defined as the same value */ /* Check to see if they are the same */ if (!compare_function(&results, &c.value, &exists TSRMLS_CC) && INI_INT("com.autoregister_verbose")) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Type library value %s is already defined and has a different value", c.name); + rpc_error(NULL TSRMLS_CC, E_WARNING, +"Type library value %s is already defined and has a different value", c.name); } free(c.name); j++; @@ -912,13 +912,11 @@ PHPAPI zval *php_COM_object_from_dispatch(IDispatch *disp) { comval *obj; - TSRMLS_FETCH(); ALLOC_COM(obj); php_COM_set(obj, &disp, FALSE); - return rpc_object_from_data(NULL, com, obj, NULL); - + return rpc_object_from_data(com, obj); } #endif Index: php4/ext/rpc/com/conversion.c diff -u php4/ext/rpc/com/conversion.c:1.54 php4/ext/rpc/com/conversion.c:1.55 --- php4/ext/rpc/com/conversion.c:1.54 Sat Jan 18 23:09:31 2003 +++ php4/ext/rpc/com/conversion.c Mon Feb 10 15:58:53 2003 @@ -97,7 +97,6 @@ PHPAPI void php_zval_to_variant_ex(zval *zval_arg, VARIANT *var_arg, int type, int codepage) { OLECHAR *unicode_str = NULL; - TSRMLS_FETCH(); VariantInit(var_arg); V_VT(var_arg) = type; @@ -125,7 +124,7 @@ safeArray = SafeArrayCreate(VT_VARIANT, 1, bounds); if (NULL == safeArray) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to convert php array to VARIANT array - %s", numberOfElements ? "" : "(Empty input array)"); + rpc_error(E_WARNING, "Unable to convert php array to VARIANT +array - %s", numberOfElements ? "" : "(Empty input array)"); ZVAL_FALSE(zval_arg); } else { V_ARRAY(var_arg) = safeArray; @@ -144,14 +143,14 @@ php_zval_to_variant(*entry, v, codepage); /* Do the required conversion */ } } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "phpArrayToSafeArray() - Unable to retrieve pointer to output element number (%d)", i); + rpc_error(E_WARNING, +"phpArrayToSafeArray() - Unable to retrieve pointer to output element number (%d)", +i); } } zend_hash_move_forward(ht); } SafeArrayUnlock( safeArray); } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "phpArrayToSafeArray() - Unable to lock safeArray"); + rpc_error(E_WARNING, "phpArrayToSafeArray() - Unable +to lock safeArray"); } } } else { @@ -366,7 +365,7 @@ break; case VT_VARIANT: - php_error_docref(NULL TSRMLS_CC, E_WARNING, "VT_VARIANT is invalid. Use VT_VARIANT|VT_BYREF instead."); + rpc_error(E_WARNING, "VT_VARIANT is invalid. Use +VT_VARIANT|VT_BYREF instead."); /* break missing intentionally */ case VT_VARIANT|VT_BYREF: { variantval *var; @@ -431,7 +430,7 @@ break; default: - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unsupported variant type: %d (0x%X)", V_VT(var_arg), V_VT(var_arg)); + rpc_error(E_WARNING, "Unsupported variant type: %d +(0x%X)", V_VT(var_arg), V_VT(var_arg)); } if (unicode_str != NULL) { @@ -446,7 +445,6 @@ /* Existing calls will be unaffected by the change - so it */ /* seemed like the smallest impact on unfamiliar code */ int ret = SUCCESS; - TSRMLS_FETCH(); INIT_PZVAL(zval_arg); @@ -465,7 +463,7 @@ /* TODO: Add support for multi-dimensional SafeArrays */ /* For now just validate that the SafeArray has one dimension */ if (1 != (Dims = SafeArrayGetDim(array))) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unsupported: multi-dimensional (%d) SafeArrays", Dims); + rpc_error(E_WARNING, "Unsupported: multi-dimensional (%d) +SafeArrays", Dims); ZVAL_NULL(zval_arg); return FAILURE; } @@ -586,7 +584,7 @@ default: ZVAL_NULL(zval_arg); ret = FAILURE; - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error converting DECIMAL value to PHP string"); + rpc_error(E_WARNING, "Error converting +DECIMAL value to PHP string"); break; } } @@ -689,7 +687,7 @@ char *error_message; error_message = php_COM_error_message(hr); - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to obtain IDispatch interface: %s", error_message); + rpc_error(E_WARNING, "Unable to obtain +IDispatch interface: %s", error_message); LocalFree(error_message); V_DISPATCH(var_arg) = NULL; @@ -698,12 +696,13 @@ /* break missing intentionaly */ case VT_DISPATCH: { comval *obj; - TSRMLS_FETCH(); if (V_DISPATCH(var_arg) == NULL) { ret = FAILURE; ZVAL_NULL(zval_arg); } else { + TSRMLS_FETCH(); + ALLOC_COM(obj); php_COM_set(obj, &V_DISPATCH(var_arg), FALSE); @@ -754,7 +753,7 @@ break; default: - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unsupported variant type: %d (0x%X)", V_VT(var_arg), V_VT(var_arg)); + rpc_error(E_WARNING, "Unsupported variant type: %d (0x%X)", +V_VT(var_arg), V_VT(var_arg)); ZVAL_NULL(zval_arg); ret = FAILURE; break; @@ -767,7 +766,6 @@ { BOOL error = FALSE; OLECHAR *unicode_str; - TSRMLS_FETCH(); if (strlen == -1) { /* request needed buffersize */ @@ -793,13 +791,13 @@ if (error) { switch (GetLastError()) { case ERROR_NO_UNICODE_TRANSLATION: - php_error_docref(NULL TSRMLS_CC, E_WARNING, "No unicode translation available for the specified string"); + rpc_error(E_WARNING, "No unicode translation available +for the specified string"); break; case ERROR_INSUFFICIENT_BUFFER: - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Internal Error: Insufficient Buffer"); + rpc_error(E_WARNING, "Internal Error: Insufficient +Buffer"); break; default: - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown error in php_char_to_OLECHAR()"); + rpc_error(E_WARNING, "Unknown error in +php_char_to_OLECHAR()"); } } @@ -821,11 +819,10 @@ /* convert string */ length = WideCharToMultiByte(codepage, codepage == CP_UTF8 ? 0 : WC_COMPOSITECHECK, unicode_str, -1, C_str, reqSize, NULL, NULL) - 1; } else { - TSRMLS_FETCH(); C_str = (char *) pemalloc(sizeof(char), persist); *C_str = 0; - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error in php_OLECHAR_to_char()"); + rpc_error(E_WARNING, "Error in php_OLECHAR_to_char()"); } if (out_length) { Index: php4/ext/rpc/com/variant.c diff -u php4/ext/rpc/com/variant.c:1.36 php4/ext/rpc/com/variant.c:1.37 --- php4/ext/rpc/com/variant.c:1.36 Sat Jan 18 19:45:48 2003 +++ php4/ext/rpc/com/variant.c Mon Feb 10 15:58:53 2003 @@ -39,7 +39,7 @@ static void variant_objects_delete(void *, zend_object_handle TSRMLS_DC); /* object handler */ -static zval* variant_read(zval *, zval *, int TSRMLS_DC); +static zval* variant_read(zval *, zval * TSRMLS_DC); static void variant_write(zval *, zval *, zval * TSRMLS_DC); static union _zend_function* variant_get_constructor(zval * TSRMLS_DC); static zend_class_entry* variant_get_class_entry(zval * TSRMLS_DC); @@ -242,7 +242,7 @@ FREE_VARIANT((variantval *)object); } -static zval* variant_read(zval *object, zval *member, int type TSRMLS_DC) +static zval* variant_read(zval *object, zval *member TSRMLS_DC) { variantval *var; zval *result; @@ -260,7 +260,7 @@ ZVAL_LONG(result, V_VT(var->var)); } else { ZVAL_FALSE(result); - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown member."); + rpc_error(NULL TSRMLS_CC, E_WARNING, "Unknown member."); } return result; @@ -280,7 +280,7 @@ } else if (zend_hash_find(&types, Z_STRVAL_P(member), Z_STRLEN_P(member) + 1, (void **) &type) == SUCCESS) { php_zval_to_variant_ex(value, var->var, *type, var->codepage); } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown member."); + rpc_error(NULL TSRMLS_CC, E_WARNING, "Unknown member."); } } Index: php4/ext/rpc/com/variant.h diff -u php4/ext/rpc/com/variant.h:1.7 php4/ext/rpc/com/variant.h:1.8 --- php4/ext/rpc/com/variant.h:1.7 Sun Feb 9 16:40:12 2003 +++ php4/ext/rpc/com/variant.h Mon Feb 10 15:58:53 2003 @@ -36,7 +36,7 @@ comval *obj; \ ALLOC_COM(obj); \ php_COM_set(obj, &V_DISPATCH(v), TRUE); \ - rpc_object_from_data(z, com, obj, NULL); \ + rpc_object_from_data_ex(z, com, obj, NULL); + \ } else { \ php_variant_to_zval((v), (z), cp); \ VariantClear(v); \
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php