From: Eric Pouech <epouech(a)codeweavers.com> Signed-off-by: Eric Pouech <epouech(a)codeweavers.com> --- dlls/msvcrt/tests/cpp.c | 2 ++ dlls/msvcrt/undname.c | 5 +++++ tools/winedump/msmangle.c | 5 +++++ 3 files changed, 12 insertions(+) diff --git a/dlls/msvcrt/tests/cpp.c b/dlls/msvcrt/tests/cpp.c index 5716455424a..e99a8d2f5fa 100644 --- a/dlls/msvcrt/tests/cpp.c +++ b/dlls/msvcrt/tests/cpp.c @@ -1330,6 +1330,8 @@ static void test_demangle(void) "__ptr64 __cdecl std::forward<struct `private: static int __cdecl FFIFunctionBinder::call(struct lua_State " "* __ptr64)'::`2'::FFIValue & __ptr64>(struct `private: static int __cdecl FFIFunctionBinder::call(struct " "xlua_State * __ptr64)'::`2'::FFIValue & __ptr64)"}, +/* 153 */ {"??$foo(a)J_W$$T(a)bar@@YAJQB_W$$THQAUgod@@@Z", + "long __cdecl bar::foo<long,wchar_t,std::nullptr_t>(wchar_t const * const,std::nullptr_t,int,struct god * const)"}, }; int i, num_test = ARRAY_SIZE(test); char* name; diff --git a/dlls/msvcrt/undname.c b/dlls/msvcrt/undname.c index 6b255109e1f..55661f21e2b 100644 --- a/dlls/msvcrt/undname.c +++ b/dlls/msvcrt/undname.c @@ -1160,6 +1160,11 @@ static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype_t* ct, sym->current++; if (!get_qualified_type(ct, sym, '$', flags)) goto done; } + else if (*sym->current == 'T') + { + sym->current++; + ct->left = str_printf(sym, "std::nullptr_t"); + } break; } break; diff --git a/tools/winedump/msmangle.c b/tools/winedump/msmangle.c index d24a9f0b881..94e91706585 100644 --- a/tools/winedump/msmangle.c +++ b/tools/winedump/msmangle.c @@ -1050,6 +1050,11 @@ static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype_t* ct, sym->current++; if (!get_qualified_type(ct, sym, '$', flags)) goto done; } + else if (*sym->current == 'T') + { + sym->current++; + ct->left = str_printf(sym, "std::nullptr_t"); + } break; } break; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/5650