cvs: php4(EXPERIMENTAL) /ext/com COM.c
| From: | Harald Radi | Date: | Mon, 10 Sep 2001 10:04:39 +0000 |
| Subject: | cvs: php4(EXPERIMENTAL) /ext/com COM.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-7365@lists.php.net to get a copy of this message | ||
phanto Mon Sep 10 06:04:39 2001 EDT
Modified files: (Branch: EXPERIMENTAL)
/php4/ext/com COM.c
Log:
MFH
Index: php4/ext/com/COM.c
diff -u php4/ext/com/COM.c:1.29.2.9 php4/ext/com/COM.c:1.29.2.10
--- php4/ext/com/COM.c:1.29.2.9 Mon Sep 10 05:58:22 2001
+++ php4/ext/com/COM.c Mon Sep 10 06:04:38 2001
@@ -100,6 +100,7 @@
DISPLAY_INI_ENTRIES();
}
+
PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR*
pDispParams, VARIANT FAR* pVarResult, char **ErrString TSRMLS_DC)
{
HRESULT hr;
@@ -164,6 +165,7 @@
}
}
+
PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR*
rgDispId TSRMLS_DC)
{
HRESULT hr;
@@ -195,6 +197,7 @@
}
}
+
PHPAPI HRESULT php_COM_release(comval *obj TSRMLS_DC)
{
HRESULT hr;
@@ -215,6 +218,7 @@
return obj->refcount;
}
+
PHPAPI HRESULT php_COM_addref(comval *obj TSRMLS_DC)
{
if (C_ISREFD(obj)) {
@@ -224,6 +228,7 @@
return obj->refcount;
}
+
PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* ppDisp, int cleanup TSRMLS_DC)
{
HRESULT hr = 1;
@@ -232,16 +237,10 @@
IDispatch FAR* pDisp;
pDisp = *ppDisp;
- if(cleanup)
- {
- *ppDisp = NULL;
- }
-
- pDisp = *ppDisp;
if (cleanup) {
*ppDisp = NULL;
}
-
+
C_REFCOUNT(obj) = 1;
C_DISPATCH(obj) = pDisp;
C_HASTLIB(obj) = SUCCEEDED(C_DISPATCH_VT(obj)->GetTypeInfo(C_DISPATCH(obj), 0, LANG_NEUTRAL,
&C_TYPEINFO(obj)));
@@ -277,6 +276,7 @@
return hr;
}
+
PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup TSRMLS_DC)
{
HRESULT hr;
@@ -307,6 +307,7 @@
return hr;
}
+
PHPAPI char *php_COM_error_message(HRESULT hr TSRMLS_DC)
{
void *pMsgBuf;
@@ -322,6 +323,7 @@
return pMsgBuf;
}
+
static char *php_string_from_clsid(const CLSID *clsid TSRMLS_DC)
{
LPOLESTR ole_clsid;
@@ -334,6 +336,7 @@
return clsid_str;
}
+
PHPAPI HRESULT php_COM_destruct(comval *obj TSRMLS_DC)
{
HRESULT hr = S_OK;
@@ -718,6 +721,7 @@
char *ErrString;
funcname = php_char_to_OLECHAR(Z_STRVAL_P(function_name), Z_STRLEN_P(function_name), codepage
TSRMLS_CC);
+
hr = php_COM_get_ids_of_names(obj, &funcname, &dispid TSRMLS_CC);
if (FAILED(hr)) {
@@ -877,6 +881,7 @@
}
/* }}} */
+
static int do_COM_offget(VARIANT *result, comval *array, pval *property, int cleanup TSRMLS_DC)
{
pval function_name;
@@ -891,6 +896,7 @@
return retval;
}
+
static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property, int cleanup
TSRMLS_DC)
{
DISPID dispid;
@@ -910,7 +916,6 @@
php_error(E_WARNING,"Unable to lookup %s: %s", Z_STRVAL_P(arg_property),
error_message);
LocalFree(error_message);
efree(propname);
-
if (cleanup) {
php_COM_destruct(obj TSRMLS_CC);
}
@@ -931,10 +936,8 @@
} else {
php_error(E_WARNING,"PropGet() failed: %s", error_message);
}
-
LocalFree(error_message);
efree(propname);
-
if (cleanup) {
php_COM_destruct(obj TSRMLS_CC);
}
@@ -942,7 +945,6 @@
}
efree(propname);
-
if (cleanup) {
php_COM_destruct(obj TSRMLS_CC);
}
@@ -998,7 +1000,6 @@
} else {
php_error(E_WARNING,"PropPut() failed: %s", error_message);
}
-
LocalFree(error_message);
efree(propname);
@@ -1154,7 +1155,6 @@
for (element=property_reference->elements_list->head; element; element=element->next) {
overloaded_property = (zend_overloaded_element *) element->data;
-
switch (overloaded_property->type) {
case OE_IS_ARRAY:
if (do_COM_offget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) ==
FAILURE) {
@@ -1184,7 +1184,6 @@
} else {
RETVAL_COM(obj);
}
-
return return_value;
}
break;
@@ -1379,6 +1378,7 @@
pval_destructor(&function_name->element);
}
+
static ITypeLib *php_COM_find_typelib(char *search_string, int mode TSRMLS_DC)
{
ITypeLib *TypeLib = NULL;
@@ -1542,6 +1542,7 @@
return TypeLib;
}
+
static int php_COM_load_typelib(ITypeLib *TypeLib, int mode TSRMLS_DC)
{
ITypeComp *TypeComp;
@@ -1589,7 +1590,6 @@
continue;
}
const_name = php_OLECHAR_to_char(bstr_ids, &c.name_len, codepage TSRMLS_CC);
-
c.name = zend_strndup(const_name, c.name_len);
c.name_len++; /* length should include the NULL */
@@ -1603,7 +1603,6 @@
if (!compare_function(&results, &c.value, &exists TSRMLS_CC) &&
INI_INT("com.autoregister_verbose")) {
php_error(E_WARNING,"Type library value %s is already defined and has a different
value", c.name);
}
-
free(c.name);
j++;
continue;
@@ -1654,6 +1653,7 @@
RETURN_BOOL(C_HASENUM(obj));
}
/* }}} */
+
static void php_register_COM_class(TSRMLS_D)
{