. Fixed bug #80007 (Potential type confusion in unixtojd() parameter parsing).
(Andy Postnikov)
+- COM:
+ . Fixed bug #55847 (DOTNET .NET 4.0 GAC new location). (cmb)
+
- DOM:
. Fixed bug #79968 (DOMChildNode API crash on unattached nodes). (Benjamin)
. New INI directive to set the maximum string length in an argument of a
stringified stack strace.
+- com.dotnet_version
+ . New INI directive to choose the version of the .NET framework to use for
+ dotnet objects.
+
========================================
12. Windows Support
========================================
DISPID create_instance;
};
+/* We link dynamically to mscoree.dll to avoid the hard dependency on .NET
+ * framework, which is only required if a dotnet instance is to be created.
+ */
+static HRESULT dotnet_bind_runtime(LPVOID FAR *ppv)
+{
+ HRESULT hr;
+ HMODULE mscoree;
+ typedef HRESULT (STDAPICALLTYPE *cbtr_t)(LPCWSTR pwszVersion, LPCWSTR pwszBuildFlavor, REFCLSID rclsid, REFIID riid, LPVOID FAR *ppv);
+ cbtr_t CorBindToRuntime;
+ OLECHAR *oleversion;
+ char *version;
+
+ mscoree = LoadLibraryA("mscoree.dll");
+ if (mscoree == NULL) {
+ return S_FALSE;
+ }
+
+ CorBindToRuntime = (cbtr_t) GetProcAddress(mscoree, "CorBindToRuntime");
+ if (CorBindToRuntime == NULL) {
+ FreeLibrary(mscoree);
+ return S_FALSE;
+ }
+
+ version = INI_STR("com.dotnet_version");
+ if (version == NULL || *version == '\0') {
+ oleversion = NULL;
+ } else {
+ oleversion = php_com_string_to_olestring(version, strlen(version), COMG(code_page));
+ }
+
+ hr = CorBindToRuntime(oleversion, NULL, &CLSID_CorRuntimeHost, &IID_ICorRuntimeHost, ppv);
+
+ efree(oleversion);
+ FreeLibrary(mscoree);
+
+ return hr;
+}
+
static HRESULT dotnet_init(char **p_where)
{
HRESULT hr;
}
memset(stuff, 0, sizeof(*stuff));
- where = "CoCreateInstance";
- hr = CoCreateInstance(&CLSID_CorRuntimeHost, NULL, CLSCTX_ALL,
- &IID_ICorRuntimeHost, (LPVOID*)&stuff->dotnet_host);
-
+ where = "dotnet_bind_runtime";
+ hr = dotnet_bind_runtime((LPVOID*)&stuff->dotnet_host);
if (FAILED(hr))
goto out;
STD_PHP_INI_ENTRY("com.autoregister_casesensitive", "1", PHP_INI_ALL, OnAutoregisterCasesensitive, autoreg_case_sensitive, zend_com_dotnet_globals, com_dotnet_globals)
STD_PHP_INI_ENTRY("com.code_page", "", PHP_INI_ALL, OnUpdateLong, code_page, zend_com_dotnet_globals, com_dotnet_globals)
PHP_INI_ENTRY("com.typelib_file", "", PHP_INI_SYSTEM, OnTypeLibFileUpdate)
+ PHP_INI_ENTRY("com.dotnet_version", NULL, PHP_INI_SYSTEM, NULL)
PHP_INI_END()
/* }}} */
; Default: system ANSI code page
;com.code_page=
+; The version of the .NET framework to use. The value of the setting are the first three parts
+; of the framework's version number, separated by dots, and prefixed with "v", e.g. "v4.0.30319".
+;com.dotnet_version=
+
[mbstring]
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; Default: system ANSI code page
;com.code_page=
+; The version of the .NET framework to use. The value of the setting are the first three parts
+; of the framework's version number, separated by dots, and prefixed with "v", e.g. "v4.0.30319".
+;com.dotnet_version=
+
[mbstring]
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.