From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- dlls/msvcrt/undname.c | 5 +++++ dlls/ucrtbase/tests/cpp.c | 3 +++ tools/winedump/msmangle.c | 5 +++++ 3 files changed, 13 insertions(+)
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/dlls/ucrtbase/tests/cpp.c b/dlls/ucrtbase/tests/cpp.c index c20f889d686..7f63a1216a0 100644 --- a/dlls/ucrtbase/tests/cpp.c +++ b/dlls/ucrtbase/tests/cpp.c @@ -220,6 +220,9 @@ static void test___unDName(void) "struct my_iter<int,0>", NULL, UNDNAME_NO_ARGUMENTS}, +/* 8 */ {"??$foo@J_W$$T@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)"}, + }; unsigned i; for (i = 0; i < ARRAY_SIZE(und_tests); i++) 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;