Module: wine Branch: master Commit: 47908f7ac21f1dd7d5ce930b53ad7d5ad28f6140 URL: http://source.winehq.org/git/wine.git/?a=commit;h=47908f7ac21f1dd7d5ce930b53...
Author: Piotr Caban piotr@codeweavers.com Date: Tue Oct 22 16:46:52 2013 +0200
msvcrt: Fix __ptr64 displaying when UNDNAME_NO_LEADING_UNDERSCORES flag is used.
---
dlls/msvcrt/tests/cpp.c | 1 + dlls/msvcrt/undname.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/dlls/msvcrt/tests/cpp.c b/dlls/msvcrt/tests/cpp.c index f25fd4a..037c88f 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<float> & ptr64 cdecl std::operator*=(class std::complex<float> & ptr64,class std::complex<float> 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 d4695c8..7cd8468 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++; }