Skip to content

Commit bdf53cc

Browse files
DmitryMaksimovcmb69
authored andcommitted
Dispatch using LANG_NEUTRAL instead of LOCALE_SYSTEM_DEFAULT
This is relevant wrt. case insensitive identifiers. Closes phpGH-7391.
1 parent 116fa65 commit bdf53cc

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

NEWS

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ PHP NEWS
22
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
33
?? ??? ????, PHP 8.1.0RC1
44

5-
5+
- COM:
6+
. Dispatch using LANG_NEUTRAL instead of LOCALE_SYSTEM_DEFAULT. (Dmitry
7+
Maksimov)
68

79
19 Aug 2021, PHP 8.1.0beta3
810

ext/com_dotnet/com_com.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ PHP_METHOD(com, __construct)
229229
/* we got the object and it lives ! */
230230

231231
/* see if it has TypeInfo available */
232-
if (FAILED(IDispatch_GetTypeInfo(V_DISPATCH(&obj->v), 0, LANG_NEUTRAL, &obj->typeinfo)) && typelib_name) {
232+
if (FAILED(IDispatch_GetTypeInfo(V_DISPATCH(&obj->v), 0, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), &obj->typeinfo)) && typelib_name) {
233233
/* load up the library from the named file */
234234
TL = php_com_load_typelib_via_cache(typelib_name, obj->code_page);
235235

@@ -338,7 +338,7 @@ HRESULT php_com_invoke_helper(php_com_dotnet_object *obj, DISPID id_member,
338338
EXCEPINFO e = {0};
339339

340340
hr = IDispatch_Invoke(V_DISPATCH(&obj->v), id_member,
341-
&IID_NULL, LOCALE_SYSTEM_DEFAULT, flags, disp_params, v, &e, &arg_err);
341+
&IID_NULL, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), flags, disp_params, v, &e, &arg_err);
342342

343343
if (silent == 0 && FAILED(hr)) {
344344
char *source = NULL, *desc = NULL, *msg = NULL;
@@ -430,15 +430,15 @@ HRESULT php_com_get_id_of_name(php_com_dotnet_object *obj, char *name,
430430
hr = ITypeInfo_GetIDsOfNames(obj->typeinfo, &olename, 1, dispid);
431431
if (FAILED(hr)) {
432432
HRESULT hr1 = hr;
433-
hr = IDispatch_GetIDsOfNames(V_DISPATCH(&obj->v), &IID_NULL, &olename, 1, LOCALE_SYSTEM_DEFAULT, dispid);
433+
hr = IDispatch_GetIDsOfNames(V_DISPATCH(&obj->v), &IID_NULL, &olename, 1, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), dispid);
434434
if (SUCCEEDED(hr) && hr1 != E_NOTIMPL) {
435435
/* fall back on IDispatch direct */
436436
ITypeInfo_Release(obj->typeinfo);
437437
obj->typeinfo = NULL;
438438
}
439439
}
440440
} else {
441-
hr = IDispatch_GetIDsOfNames(V_DISPATCH(&obj->v), &IID_NULL, &olename, 1, LOCALE_SYSTEM_DEFAULT, dispid);
441+
hr = IDispatch_GetIDsOfNames(V_DISPATCH(&obj->v), &IID_NULL, &olename, 1, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), dispid);
442442
}
443443
efree(olename);
444444

0 commit comments

Comments
 (0)