From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@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@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)"}, }; 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;