]> granicus.if.org Git - php/commitdiff
Fix for Bug #29490 from Michael Sisolak.
authorWez Furlong <wez@php.net>
Sat, 7 Aug 2004 21:00:59 +0000 (21:00 +0000)
committerWez Furlong <wez@php.net>
Sat, 7 Aug 2004 21:00:59 +0000 (21:00 +0000)
Another fine patch; thanks Michael.

ext/com_dotnet/com_dotnet.c

index e6f92c155a7a07d9165a26f021f3bccb8798d743..58c4255fed705a45b545a365a6eef7f01b9213e5 100644 (file)
@@ -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,