diff options
author | Wez Furlong <wez@php.net> | 2004-08-07 21:01:43 +0000 |
---|---|---|
committer | Wez Furlong <wez@php.net> | 2004-08-07 21:01:43 +0000 |
commit | aff24aed0daf3cef258161555f170edab91d2e14 (patch) | |
tree | 80340f8cb7baae4ce4547f1d621012bd0621e4a9 | |
parent | b915644ec42cb0b355cd2f8f1647144cac9bbfd0 (diff) | |
download | php-git-aff24aed0daf3cef258161555f170edab91d2e14.tar.gz |
MFH: Fix for Bug #29490 from Michael Sisolak
-rw-r--r-- | ext/com_dotnet/com_dotnet.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/ext/com_dotnet/com_dotnet.c b/ext/com_dotnet/com_dotnet.c index 7199b91aa7..ce3c609742 100644 --- a/ext/com_dotnet/com_dotnet.c +++ b/ext/com_dotnet/com_dotnet.c @@ -102,6 +102,7 @@ PHP_FUNCTION(com_dotnet_create_instance) struct dotnet_runtime_stuff *stuff; IObjectHandle *handle; DISPPARAMS params; + OLECHAR *olestring; VARIANT vargs[2]; VARIANT retval; HRESULT hr; @@ -138,10 +139,14 @@ PHP_FUNCTION(com_dotnet_create_instance) VariantInit(&retval); V_VT(&vargs[0]) = VT_BSTR; - V_BSTR(&vargs[0]) = php_com_string_to_olestring(datatype_name, datatype_name_len, obj->code_page TSRMLS_CC); + olestring = php_com_string_to_olestring(datatype_name, datatype_name_len, obj->code_page TSRMLS_CC); + V_BSTR(&vargs[0]) = SysAllocStringByteLen((char*)olestring, datatype_name_len * sizeof(OLECHAR)); + efree(olestring); V_VT(&vargs[1]) = VT_BSTR; - V_BSTR(&vargs[1]) = php_com_string_to_olestring(assembly_name, assembly_name_len, obj->code_page TSRMLS_CC); + olestring = php_com_string_to_olestring(assembly_name, assembly_name_len, obj->code_page TSRMLS_CC); + V_BSTR(&vargs[1]) = SysAllocStringByteLen((char*)olestring, assembly_name_len * sizeof(OLECHAR)); + efree(olestring); hr = IDispatch_Invoke(stuff->dotnet_domain, stuff->create_instance, &IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, ¶ms, &retval, NULL, NULL); |