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

Reply via email to