From d218d82af4658e94208e12db89c03f514fe52996 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Tue, 22 Oct 2013 16:47:06 +0200 Subject: [PATCH] msvcrt: Don't output __ptr64 when UNDNAME_NO_MS_KEYWORDS is used. --- dlls/msvcrt/tests/cpp.c | 1 + dlls/msvcrt/undname.c | 20 +++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/dlls/msvcrt/tests/cpp.c b/dlls/msvcrt/tests/cpp.c index 037c88fb23f..c8ff25dd51c 100644 --- a/dlls/msvcrt/tests/cpp.c +++ b/dlls/msvcrt/tests/cpp.c @@ -1320,6 +1320,7 @@ static void test_demangle(void) "?_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}, +/* 128 */ {"??Xstd@@YAAEAV?$complex@M@0@AEAV10@AEBV10@@Z", "class std::complex & std::operator*=(class std::complex &,class std::complex const &)", NULL, 2}, }; int i, num_test = (sizeof(test)/sizeof(test[0])); char* name; diff --git a/dlls/msvcrt/undname.c b/dlls/msvcrt/undname.c index 7cd8468d89d..beaec4f1369 100644 --- a/dlls/msvcrt/undname.c +++ b/dlls/msvcrt/undname.c @@ -406,9 +406,12 @@ static BOOL get_modifier(struct parsed_symbol *sym, const char **ret, const char *ptr_modif = NULL; if (*sym->current == 'E') { - *ptr_modif = "__ptr64"; - if (sym->flags & UNDNAME_NO_LEADING_UNDERSCORES) - *ptr_modif = *ptr_modif + 2; + if (!(sym->flags & UNDNAME_NO_MS_KEYWORDS)) + { + *ptr_modif = "__ptr64"; + if (sym->flags & UNDNAME_NO_LEADING_UNDERSCORES) + *ptr_modif = *ptr_modif + 2; + } sym->current++; } switch (*sym->current++) @@ -431,10 +434,13 @@ static BOOL get_modified_type(struct datatype_t *ct, struct parsed_symbol* sym, if (*sym->current == 'E') { - if (sym->flags & UNDNAME_NO_LEADING_UNDERSCORES) - ptr_modif = " ptr64"; - else - ptr_modif = " __ptr64"; + if (!(sym->flags & UNDNAME_NO_MS_KEYWORDS)) + { + if (sym->flags & UNDNAME_NO_LEADING_UNDERSCORES) + ptr_modif = " ptr64"; + else + ptr_modif = " __ptr64"; + } sym->current++; } -- 2.11.4.GIT