msvcrt: Don't output __ptr64 when UNDNAME_NO_MS_KEYWORDS is used.

This commit is contained in:
Piotr Caban 2013-10-22 16:47:06 +02:00 committed by Alexandre Julliard
parent 47908f7ac2
commit d218d82af4
2 changed files with 14 additions and 7 deletions

View File

@ -1320,6 +1320,7 @@ static void test_demangle(void)
"?_dispatch@_impl_Engine@SalomeApp@@$R4CE@BA@PPPPPPPM@7AE_NAAVomniCallHandle@@@Z"}, "?_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}, /* 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}, /* 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},
/* 128 */ {"??Xstd@@YAAEAV?$complex@M@0@AEAV10@AEBV10@@Z", "class std::complex<float> & std::operator*=(class std::complex<float> &,class std::complex<float> const &)", NULL, 2},
}; };
int i, num_test = (sizeof(test)/sizeof(test[0])); int i, num_test = (sizeof(test)/sizeof(test[0]));
char* name; char* name;

View File

@ -406,9 +406,12 @@ static BOOL get_modifier(struct parsed_symbol *sym, const char **ret, const char
*ptr_modif = NULL; *ptr_modif = NULL;
if (*sym->current == 'E') if (*sym->current == 'E')
{ {
*ptr_modif = "__ptr64"; if (!(sym->flags & UNDNAME_NO_MS_KEYWORDS))
if (sym->flags & UNDNAME_NO_LEADING_UNDERSCORES) {
*ptr_modif = *ptr_modif + 2; *ptr_modif = "__ptr64";
if (sym->flags & UNDNAME_NO_LEADING_UNDERSCORES)
*ptr_modif = *ptr_modif + 2;
}
sym->current++; sym->current++;
} }
switch (*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->current == 'E')
{ {
if (sym->flags & UNDNAME_NO_LEADING_UNDERSCORES) if (!(sym->flags & UNDNAME_NO_MS_KEYWORDS))
ptr_modif = " ptr64"; {
else if (sym->flags & UNDNAME_NO_LEADING_UNDERSCORES)
ptr_modif = " __ptr64"; ptr_modif = " ptr64";
else
ptr_modif = " __ptr64";
}
sym->current++; sym->current++;
} }