diff --git a/dlls/msvcrt/tests/cpp.c b/dlls/msvcrt/tests/cpp.c index f25fd4a468..037c88fb23 100644 --- a/dlls/msvcrt/tests/cpp.c +++ b/dlls/msvcrt/tests/cpp.c @@ -1319,6 +1319,7 @@ static void test_demangle(void) "[thunk]:public: virtual bool __thiscall SalomeApp::_impl_Engine::_dispatch`vtordispex{36,16,4294967292,8}' (class omniCallHandle &)", "?_dispatch@_impl_Engine@SalomeApp@@$R4CE@BA@PPPPPPPM@7AE_NAAVomniCallHandle@@@Z"}, /* 126 */ {"?_Doraise@bad_cast@std@@MEBAXXZ", "protected: virtual void __cdecl std::bad_cast::_Doraise(void)", NULL, 0x60}, +/* 127 */ {"??Xstd@@YAAEAV?$complex@M@0@AEAV10@AEBV10@@Z", "class std::complex & ptr64 cdecl std::operator*=(class std::complex & ptr64,class std::complex const & ptr64)", NULL, 1}, }; int i, num_test = (sizeof(test)/sizeof(test[0])); char* name; diff --git a/dlls/msvcrt/undname.c b/dlls/msvcrt/undname.c index d4695c84a6..7cd8468d89 100644 --- a/dlls/msvcrt/undname.c +++ b/dlls/msvcrt/undname.c @@ -407,6 +407,8 @@ static BOOL get_modifier(struct parsed_symbol *sym, const char **ret, const char if (*sym->current == 'E') { *ptr_modif = "__ptr64"; + if (sym->flags & UNDNAME_NO_LEADING_UNDERSCORES) + *ptr_modif = *ptr_modif + 2; sym->current++; } switch (*sym->current++) @@ -429,7 +431,10 @@ static BOOL get_modified_type(struct datatype_t *ct, struct parsed_symbol* sym, if (*sym->current == 'E') { - ptr_modif = " __ptr64"; + if (sym->flags & UNDNAME_NO_LEADING_UNDERSCORES) + ptr_modif = " ptr64"; + else + ptr_modif = " __ptr64"; sym->current++; }