@@ -378,8 +378,7 @@ static PHP_INI_MH(OnTypelibFileChange)
378
378
char * typelib_name_buffer ;
379
379
char * strtok_buf = NULL ;
380
380
int interactive ;
381
-
382
- CLS_FETCH ();
381
+ TSRMLS_FETCH ();
383
382
interactive = CG (interactive );
384
383
385
384
if (!new_value || (typelib_file = VCWD_FOPEN (new_value , "r" ))== NULL )
@@ -437,7 +436,7 @@ static PHP_INI_MH(OnTypelibFileChange)
437
436
{
438
437
printf ("\rLoading %-60s\r" , typelib_name );
439
438
}
440
-
439
+
441
440
if ((pTL = php_COM_find_typelib (typelib_name , mode )) != NULL )
442
441
{
443
442
php_COM_load_typelib (pTL , mode );
@@ -953,7 +952,6 @@ static int do_COM_offget(VARIANT *result, comval *array, pval *property, int cle
953
952
if (cleanup )
954
953
{
955
954
php_COM_destruct (array );
956
- efree (array );
957
955
}
958
956
959
957
return retval ;
@@ -1113,7 +1111,7 @@ PHP_FUNCTION(com_propget)
1113
1111
1114
1112
ALLOC_VARIANT (var_result );
1115
1113
1116
- if (do_COM_propget (var_result , obj , arg_property , 0 ) == FAILURE )
1114
+ if (do_COM_propget (var_result , obj , arg_property , FALSE) == FAILURE )
1117
1115
{
1118
1116
FREE_VARIANT (var_result );
1119
1117
RETURN_FALSE ;
@@ -1206,7 +1204,7 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
1206
1204
ZVAL_NULL (& return_value );
1207
1205
1208
1206
/* fetch the IDispatch interface */
1209
- zend_hash_index_find (object -> value . obj . properties , 0 , (void * * ) & comval_handle );
1207
+ zend_hash_index_find (Z_OBJPROP_P ( object ) , 0 , (void * * ) & comval_handle );
1210
1208
obj = (comval * ) zend_list_find (Z_LVAL_P (* comval_handle ), & type );
1211
1209
if (!obj || (type != IS_COM ))
1212
1210
{
@@ -1225,7 +1223,7 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
1225
1223
if (do_COM_offget (var_result , obj , & overloaded_property -> element , FALSE) == FAILURE )
1226
1224
{
1227
1225
FREE_VARIANT (var_result );
1228
- php_COM_destruct (obj_prop );
1226
+ FREE_COM (obj_prop );
1229
1227
1230
1228
return return_value ;
1231
1229
}
@@ -1235,23 +1233,26 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
1235
1233
if (do_COM_propget (var_result , obj , & overloaded_property -> element , FALSE) == FAILURE )
1236
1234
{
1237
1235
FREE_VARIANT (var_result );
1238
- php_COM_destruct (obj_prop );
1236
+ FREE_COM (obj_prop );
1239
1237
1240
1238
return return_value ;
1241
1239
}
1242
1240
break ;
1243
1241
1244
1242
case OE_IS_METHOD :
1245
1243
{
1244
+ FREE_VARIANT (var_result );
1246
1245
if (obj != obj_prop )
1247
1246
{
1248
- php_COM_destruct (obj_prop );
1247
+ FREE_COM (obj_prop );
1249
1248
1250
1249
return_value = * object ;
1251
1250
ZVAL_ADDREF (& return_value );
1252
1251
}
1253
- FREE_VARIANT (var_result );
1254
-
1252
+ else
1253
+ {
1254
+ RETVAL_COM (obj );
1255
+ }
1255
1256
return return_value ;
1256
1257
}
1257
1258
break ;
@@ -1262,21 +1263,19 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
1262
1263
if (V_DISPATCH (var_result ) == NULL )
1263
1264
{
1264
1265
FREE_VARIANT (var_result );
1265
- php_COM_destruct (obj_prop );
1266
+ FREE_COM (obj_prop );
1266
1267
1267
1268
return return_value ;
1268
1269
}
1269
1270
1270
1271
obj = obj_prop ;
1271
1272
php_COM_set (obj , & V_DISPATCH (var_result ), TRUE);
1272
-
1273
- RETVAL_COM (obj );
1274
1273
}
1275
1274
else
1276
1275
{
1277
1276
php_variant_to_pval (var_result , & return_value , FALSE, codepage );
1278
1277
1279
- php_COM_destruct (obj_prop );
1278
+ FREE_COM (obj_prop );
1280
1279
obj_prop = NULL ;
1281
1280
}
1282
1281
@@ -1302,7 +1301,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
1302
1301
1303
1302
1304
1303
/* fetch the IDispatch interface */
1305
- zend_hash_index_find (object -> value . obj . properties , 0 , (void * * ) & comval_handle );
1304
+ zend_hash_index_find (Z_OBJPROP_P ( object ) , 0 , (void * * ) & comval_handle );
1306
1305
obj = (comval * )zend_list_find (Z_LVAL_P (* comval_handle ), & type );
1307
1306
if (!obj || (type != IS_COM ))
1308
1307
{
@@ -1321,7 +1320,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
1321
1320
if (do_COM_offget (var_result , obj , & overloaded_property -> element , FALSE) == FAILURE )
1322
1321
{
1323
1322
FREE_VARIANT (var_result );
1324
- php_COM_destruct (obj_prop );
1323
+ FREE_COM (obj_prop );
1325
1324
1326
1325
return FAILURE ;
1327
1326
}
@@ -1331,7 +1330,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
1331
1330
if (do_COM_propget (var_result , obj , & overloaded_property -> element , FALSE) == FAILURE )
1332
1331
{
1333
1332
FREE_VARIANT (var_result );
1334
- php_COM_destruct (obj_prop );
1333
+ FREE_COM (obj_prop );
1335
1334
1336
1335
return FAILURE ;
1337
1336
}
@@ -1348,7 +1347,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
1348
1347
if (V_DISPATCH (var_result ) == NULL )
1349
1348
{
1350
1349
FREE_VARIANT (var_result );
1351
- php_COM_destruct (obj_prop );
1350
+ FREE_COM (obj_prop );
1352
1351
1353
1352
return FAILURE ;
1354
1353
}
@@ -1358,7 +1357,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
1358
1357
}
1359
1358
else
1360
1359
{
1361
- php_COM_destruct (obj_prop );
1360
+ FREE_COM (obj_prop );
1362
1361
FREE_VARIANT (var_result );
1363
1362
1364
1363
return FAILURE ;
@@ -1371,7 +1370,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
1371
1370
1372
1371
overloaded_property = (zend_overloaded_element * ) element -> data ;
1373
1372
do_COM_propput (& result , obj , & overloaded_property -> element , value );
1374
- php_COM_destruct (obj_prop );
1373
+ FREE_COM (obj_prop );
1375
1374
1376
1375
pval_destructor (& overloaded_property -> element );
1377
1376
@@ -1401,7 +1400,7 @@ PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_pro
1401
1400
* object_handle = * return_value ;
1402
1401
pval_copy_constructor (object_handle );
1403
1402
INIT_PZVAL (object_handle );
1404
- zend_hash_index_update (object -> value . obj . properties , 0 , & object_handle , sizeof (pval * ), NULL );
1403
+ zend_hash_index_update (Z_OBJPROP_P ( object ) , 0 , & object_handle , sizeof (pval * ), NULL );
1405
1404
pval_destructor (& function_name -> element );
1406
1405
1407
1406
return ;
@@ -1417,8 +1416,8 @@ PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_pro
1417
1416
pval_destructor (& function_name -> element );
1418
1417
return ;
1419
1418
}
1420
- zend_hash_index_find (property . value . obj . properties , 0 , (void * * ) & handle );
1421
- obj = (comval * )zend_list_find (( * handle )-> value . lval , & type );
1419
+ zend_hash_index_find (Z_OBJPROP ( property ) , 0 , (void * * ) & handle );
1420
+ obj = (comval * )zend_list_find (Z_LVAL_PP ( handle ), & type );
1422
1421
1423
1422
if (!obj || (type != IS_COM ))
1424
1423
{
@@ -1450,8 +1449,6 @@ PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_pro
1450
1449
1451
1450
if (do_COM_invoke (obj , & function_name -> element , var_result , arguments , arg_count ) == FAILURE )
1452
1451
{
1453
- FREE_VARIANT (var_result );
1454
-
1455
1452
RETVAL_FALSE ;
1456
1453
}
1457
1454
else
@@ -1660,7 +1657,7 @@ static int php_COM_load_typelib(ITypeLib *TypeLib, int mode)
1660
1657
ITypeComp * TypeComp ;
1661
1658
int i ;
1662
1659
int interfaces ;
1663
- ELS_FETCH ();
1660
+ TSRMLS_FETCH ();
1664
1661
1665
1662
if (NULL == TypeLib )
1666
1663
{
@@ -1729,7 +1726,7 @@ static int php_COM_load_typelib(ITypeLib *TypeLib, int mode)
1729
1726
1730
1727
/* Before registering the contsnt, let's see if we can find it */
1731
1728
{
1732
- zend_register_constant (& c ELS_CC );
1729
+ zend_register_constant (& c TSRMLS_CC );
1733
1730
}
1734
1731
j ++ ;
1735
1732
}
@@ -1757,8 +1754,8 @@ PHP_FUNCTION(com_isenum)
1757
1754
getParameters (ht , 1 , & object );
1758
1755
1759
1756
/* obtain IDispatch interface */
1760
- zend_hash_index_find (object -> value . obj . properties , 0 , (void * * ) & comval_handle );
1761
- obj = (comval * ) zend_list_find (( * comval_handle )-> value . lval , & type );
1757
+ zend_hash_index_find (Z_OBJPROP_P ( object ) , 0 , (void * * ) & comval_handle );
1758
+ obj = (comval * ) zend_list_find (Z_LVAL_PP ( comval_handle ), & type );
1762
1759
if (!obj || (type != IS_COM ))
1763
1760
{
1764
1761
php_error (E_WARNING ,"%s is not a COM object handler" , "" );
0 commit comments