Skip to content

Commit bd21994

Browse files
author
Harald Radi
committed
fixed a few memory issues
1 parent 89ee53a commit bd21994

File tree

4 files changed

+10
-18
lines changed

4 files changed

+10
-18
lines changed

ext/com/COM.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1452,7 +1452,8 @@ PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_pro
14521452
php_variant_to_pval(var_result, return_value, 0, codepage);
14531453
}
14541454

1455-
FREE_VARIANT(var_result);
1455+
// FREE_VARIANT(var_result);
1456+
efree(var_result);
14561457
efree(arguments);
14571458
}
14581459

ext/com/conversion.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -529,11 +529,11 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
529529
hr = SafeArrayGetElement(array, indices, (VOID *) &(vv.lVal));
530530
}
531531
if (FAILED(hr))
532-
{
532+
{
533533
/* Failure to retieve an element probably means the array is sparse */
534534
/* So leave the php array sparse too */
535535
continue;
536-
}
536+
}
537537
/* Create an element to be added to the array */
538538
ALLOC_ZVAL(element);
539539
/* Call ourself again to handle the base type conversion */
@@ -560,10 +560,7 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
560560
add_index_zval(pval_arg, ii, element);
561561
}
562562
}
563-
SafeArrayUnlock(array);
564-
/* Clean up the SafeArray since that is our responsibility */
565-
SafeArrayDestroyData(array);
566-
SafeArrayDestroyDescriptor(array);
563+
SafeArrayUnlock(array);
567564
}
568565
else switch(var_arg->vt & ~VT_BYREF)
569566
{
@@ -683,13 +680,11 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
683680
if(V_ISBYREF(var_arg))
684681
{
685682
Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(*V_BSTRREF(var_arg), &Z_STRLEN_P(pval_arg), persistent, codepage);
686-
SysFreeString(*V_BSTRREF(var_arg));
687683
efree(V_BSTRREF(var_arg));
688684
}
689685
else
690686
{
691687
Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(V_BSTR(var_arg), &Z_STRLEN_P(pval_arg), persistent, codepage);
692-
SysFreeString(V_BSTR(var_arg));
693688
}
694689

695690
Z_TYPE_P(pval_arg) = IS_STRING;

ext/rpc/com/com_wrapper.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1452,7 +1452,8 @@ PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_pro
14521452
php_variant_to_pval(var_result, return_value, 0, codepage);
14531453
}
14541454

1455-
FREE_VARIANT(var_result);
1455+
// FREE_VARIANT(var_result);
1456+
efree(var_result);
14561457
efree(arguments);
14571458
}
14581459

ext/rpc/com/conversion.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -529,11 +529,11 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
529529
hr = SafeArrayGetElement(array, indices, (VOID *) &(vv.lVal));
530530
}
531531
if (FAILED(hr))
532-
{
532+
{
533533
/* Failure to retieve an element probably means the array is sparse */
534534
/* So leave the php array sparse too */
535535
continue;
536-
}
536+
}
537537
/* Create an element to be added to the array */
538538
ALLOC_ZVAL(element);
539539
/* Call ourself again to handle the base type conversion */
@@ -560,10 +560,7 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
560560
add_index_zval(pval_arg, ii, element);
561561
}
562562
}
563-
SafeArrayUnlock(array);
564-
/* Clean up the SafeArray since that is our responsibility */
565-
SafeArrayDestroyData(array);
566-
SafeArrayDestroyDescriptor(array);
563+
SafeArrayUnlock(array);
567564
}
568565
else switch(var_arg->vt & ~VT_BYREF)
569566
{
@@ -683,13 +680,11 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
683680
if(V_ISBYREF(var_arg))
684681
{
685682
Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(*V_BSTRREF(var_arg), &Z_STRLEN_P(pval_arg), persistent, codepage);
686-
SysFreeString(*V_BSTRREF(var_arg));
687683
efree(V_BSTRREF(var_arg));
688684
}
689685
else
690686
{
691687
Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(V_BSTR(var_arg), &Z_STRLEN_P(pval_arg), persistent, codepage);
692-
SysFreeString(V_BSTR(var_arg));
693688
}
694689

695690
Z_TYPE_P(pval_arg) = IS_STRING;

0 commit comments

Comments
 (0)