summaryrefslogtreecommitdiff
path: root/ext/com_dotnet/com_dotnet.c
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2004-08-07 21:00:59 +0000
committerWez Furlong <wez@php.net>2004-08-07 21:00:59 +0000
commit8c4b687769f5ce62795f324f29eafc72120a72a7 (patch)
treed9ed87a4f0ab2a6a18e065192efac6776b7b7c63 /ext/com_dotnet/com_dotnet.c
parent37b8c079d6c7d08b6d8e6e4a83cbf583a1b02a95 (diff)
downloadphp-git-8c4b687769f5ce62795f324f29eafc72120a72a7.tar.gz
Fix for Bug #29490 from Michael Sisolak.
Another fine patch; thanks Michael.
Diffstat (limited to 'ext/com_dotnet/com_dotnet.c')
-rw-r--r--ext/com_dotnet/com_dotnet.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/ext/com_dotnet/com_dotnet.c b/ext/com_dotnet/com_dotnet.c
index e6f92c155a..58c4255fed 100644
--- a/ext/com_dotnet/com_dotnet.c
+++ b/ext/com_dotnet/com_dotnet.c
@@ -101,6 +101,7 @@ PHP_FUNCTION(com_dotnet_create_instance)
int assembly_name_len, datatype_name_len;
struct dotnet_runtime_stuff *stuff;
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);
where = "IDispatch_Invoke";
hr = IDispatch_Invoke(stuff->dotnet_domain, stuff->create_instance, &IID_NULL, LOCALE_SYSTEM_DEFAULT,