int assembly_name_len, datatype_name_len;
struct dotnet_runtime_stuff *stuff;
DISPPARAMS params;
+ OLECHAR *olestring;
VARIANT vargs[2];
VARIANT retval;
HRESULT hr;
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,