@@ -100,6 +100,7 @@ static PHP_MINFO_FUNCTION(COM)
100
100
DISPLAY_INI_ENTRIES ();
101
101
}
102
102
103
+
103
104
PHPAPI HRESULT php_COM_invoke (comval * obj , DISPID dispIdMember , WORD wFlags , DISPPARAMS FAR * pDispParams , VARIANT FAR * pVarResult , char * * ErrString TSRMLS_DC )
104
105
{
105
106
HRESULT hr ;
@@ -164,6 +165,7 @@ PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DIS
164
165
}
165
166
}
166
167
168
+
167
169
PHPAPI HRESULT php_COM_get_ids_of_names (comval * obj , OLECHAR FAR * FAR * rgszNames , DISPID FAR * rgDispId TSRMLS_DC )
168
170
{
169
171
HRESULT hr ;
@@ -195,6 +197,7 @@ PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames
195
197
}
196
198
}
197
199
200
+
198
201
PHPAPI HRESULT php_COM_release (comval * obj TSRMLS_DC )
199
202
{
200
203
HRESULT hr ;
@@ -215,6 +218,7 @@ PHPAPI HRESULT php_COM_release(comval *obj TSRMLS_DC)
215
218
return obj -> refcount ;
216
219
}
217
220
221
+
218
222
PHPAPI HRESULT php_COM_addref (comval * obj TSRMLS_DC )
219
223
{
220
224
if (C_ISREFD (obj )) {
@@ -224,24 +228,19 @@ PHPAPI HRESULT php_COM_addref(comval *obj TSRMLS_DC)
224
228
return obj -> refcount ;
225
229
}
226
230
231
+
227
232
PHPAPI HRESULT php_COM_set (comval * obj , IDispatch FAR * FAR * ppDisp , int cleanup TSRMLS_DC )
228
233
{
229
234
HRESULT hr = 1 ;
230
235
DISPPARAMS dispparams ;
231
236
VARIANT * var_result ;
232
237
IDispatch FAR * pDisp ;
233
238
234
- pDisp = * ppDisp ;
235
- if (cleanup )
236
- {
237
- * ppDisp = NULL ;
238
- }
239
-
240
239
pDisp = * ppDisp ;
241
240
if (cleanup ) {
242
241
* ppDisp = NULL ;
243
242
}
244
-
243
+
245
244
C_REFCOUNT (obj ) = 1 ;
246
245
C_DISPATCH (obj ) = pDisp ;
247
246
C_HASTLIB (obj ) = SUCCEEDED (C_DISPATCH_VT (obj )-> GetTypeInfo (C_DISPATCH (obj ), 0 , LANG_NEUTRAL , & C_TYPEINFO (obj )));
@@ -277,6 +276,7 @@ PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* ppDisp, int cleanup
277
276
return hr ;
278
277
}
279
278
279
+
280
280
PHPAPI HRESULT php_COM_clone (comval * obj , comval * clone , int cleanup TSRMLS_DC )
281
281
{
282
282
HRESULT hr ;
@@ -307,6 +307,7 @@ PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup TSRMLS_DC)
307
307
return hr ;
308
308
}
309
309
310
+
310
311
PHPAPI char * php_COM_error_message (HRESULT hr TSRMLS_DC )
311
312
{
312
313
void * pMsgBuf ;
@@ -322,6 +323,7 @@ PHPAPI char *php_COM_error_message(HRESULT hr TSRMLS_DC)
322
323
return pMsgBuf ;
323
324
}
324
325
326
+
325
327
static char * php_string_from_clsid (const CLSID * clsid TSRMLS_DC )
326
328
{
327
329
LPOLESTR ole_clsid ;
@@ -334,6 +336,7 @@ static char *php_string_from_clsid(const CLSID *clsid TSRMLS_DC)
334
336
return clsid_str ;
335
337
}
336
338
339
+
337
340
PHPAPI HRESULT php_COM_destruct (comval * obj TSRMLS_DC )
338
341
{
339
342
HRESULT hr = S_OK ;
@@ -718,6 +721,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
718
721
char * ErrString ;
719
722
720
723
funcname = php_char_to_OLECHAR (Z_STRVAL_P (function_name ), Z_STRLEN_P (function_name ), codepage TSRMLS_CC );
724
+
721
725
hr = php_COM_get_ids_of_names (obj , & funcname , & dispid TSRMLS_CC );
722
726
723
727
if (FAILED (hr )) {
@@ -877,6 +881,7 @@ PHP_FUNCTION(com_addref)
877
881
}
878
882
/* }}} */
879
883
884
+
880
885
static int do_COM_offget (VARIANT * result , comval * array , pval * property , int cleanup TSRMLS_DC )
881
886
{
882
887
pval function_name ;
@@ -891,6 +896,7 @@ static int do_COM_offget(VARIANT *result, comval *array, pval *property, int cle
891
896
return retval ;
892
897
}
893
898
899
+
894
900
static int do_COM_propget (VARIANT * var_result , comval * obj , pval * arg_property , int cleanup TSRMLS_DC )
895
901
{
896
902
DISPID dispid ;
@@ -910,7 +916,6 @@ static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property,
910
916
php_error (E_WARNING ,"Unable to lookup %s: %s" , Z_STRVAL_P (arg_property ), error_message );
911
917
LocalFree (error_message );
912
918
efree (propname );
913
-
914
919
if (cleanup ) {
915
920
php_COM_destruct (obj TSRMLS_CC );
916
921
}
@@ -931,18 +936,15 @@ static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property,
931
936
} else {
932
937
php_error (E_WARNING ,"PropGet() failed: %s" , error_message );
933
938
}
934
-
935
939
LocalFree (error_message );
936
940
efree (propname );
937
-
938
941
if (cleanup ) {
939
942
php_COM_destruct (obj TSRMLS_CC );
940
943
}
941
944
return FAILURE ;
942
945
}
943
946
944
947
efree (propname );
945
-
946
948
if (cleanup ) {
947
949
php_COM_destruct (obj TSRMLS_CC );
948
950
}
@@ -998,7 +1000,6 @@ static void do_COM_propput(pval *return_value, comval *obj, pval *arg_property,
998
1000
} else {
999
1001
php_error (E_WARNING ,"PropPut() failed: %s" , error_message );
1000
1002
}
1001
-
1002
1003
LocalFree (error_message );
1003
1004
efree (propname );
1004
1005
@@ -1154,7 +1155,6 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
1154
1155
1155
1156
for (element = property_reference -> elements_list -> head ; element ; element = element -> next ) {
1156
1157
overloaded_property = (zend_overloaded_element * ) element -> data ;
1157
-
1158
1158
switch (overloaded_property -> type ) {
1159
1159
case OE_IS_ARRAY :
1160
1160
if (do_COM_offget (var_result , obj , & overloaded_property -> element , FALSE TSRMLS_CC ) == FAILURE ) {
@@ -1184,7 +1184,6 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
1184
1184
} else {
1185
1185
RETVAL_COM (obj );
1186
1186
}
1187
-
1188
1187
return return_value ;
1189
1188
}
1190
1189
break ;
@@ -1379,6 +1378,7 @@ PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_pro
1379
1378
pval_destructor (& function_name -> element );
1380
1379
}
1381
1380
1381
+
1382
1382
static ITypeLib * php_COM_find_typelib (char * search_string , int mode TSRMLS_DC )
1383
1383
{
1384
1384
ITypeLib * TypeLib = NULL ;
@@ -1542,6 +1542,7 @@ static ITypeLib *php_COM_find_typelib(char *search_string, int mode TSRMLS_DC)
1542
1542
return TypeLib ;
1543
1543
}
1544
1544
1545
+
1545
1546
static int php_COM_load_typelib (ITypeLib * TypeLib , int mode TSRMLS_DC )
1546
1547
{
1547
1548
ITypeComp * TypeComp ;
@@ -1589,7 +1590,6 @@ static int php_COM_load_typelib(ITypeLib *TypeLib, int mode TSRMLS_DC)
1589
1590
continue ;
1590
1591
}
1591
1592
const_name = php_OLECHAR_to_char (bstr_ids , & c .name_len , codepage TSRMLS_CC );
1592
-
1593
1593
c .name = zend_strndup (const_name , c .name_len );
1594
1594
c .name_len ++ ; /* length should include the NULL */
1595
1595
@@ -1603,7 +1603,6 @@ static int php_COM_load_typelib(ITypeLib *TypeLib, int mode TSRMLS_DC)
1603
1603
if (!compare_function (& results , & c .value , & exists TSRMLS_CC ) && INI_INT ("com.autoregister_verbose" )) {
1604
1604
php_error (E_WARNING ,"Type library value %s is already defined and has a different value" , c .name );
1605
1605
}
1606
-
1607
1606
free (c .name );
1608
1607
j ++ ;
1609
1608
continue ;
@@ -1655,6 +1654,7 @@ PHP_FUNCTION(com_isenum)
1655
1654
}
1656
1655
/* }}} */
1657
1656
1657
+
1658
1658
static void php_register_COM_class (TSRMLS_D )
1659
1659
{
1660
1660
INIT_OVERLOADED_CLASS_ENTRY (COM_class_entry , "COM" , NULL ,
0 commit comments