msvcrt: Fixed symbol unmangling for template-parameter-?? form, as well as test.
Spotted by James Hawkins.
This commit is contained in:
parent
b9f8a81d8c
commit
a940218c0b
|
@ -982,7 +982,7 @@ static void test_demangle(void)
|
||||||
{ "?Qux@Bar@@0PAP6AHPAV1@AAH1PAH@ZA", "private: static int (__cdecl** Bar::Qux)(class Bar *,int &,int &,int *)" },
|
{ "?Qux@Bar@@0PAP6AHPAV1@AAH1PAH@ZA", "private: static int (__cdecl** Bar::Qux)(class Bar *,int &,int &,int *)" },
|
||||||
{ "?Qux@Bar@@0PAP6AHPAV1@AAH1PAH@ZA", "Bar::Qux", 0x1800},
|
{ "?Qux@Bar@@0PAP6AHPAV1@AAH1PAH@ZA", "Bar::Qux", 0x1800},
|
||||||
{"?$AAA@$DBAB@", "AAA<`template-parameter257'>"},
|
{"?$AAA@$DBAB@", "AAA<`template-parameter257'>"},
|
||||||
{"?$AAA@$D?4@", "AAA<`template-parameter-5'>"},
|
{"?$AAA@?C@", "AAA<`template-parameter-2'>"},
|
||||||
{"?$AAA@PAUBBB@@", "AAA<struct BBB *>"},
|
{"?$AAA@PAUBBB@@", "AAA<struct BBB *>"},
|
||||||
{"??$ccccc@PAVaaa@@@bar@bb@foo@@DGPAV0@PAV0@PAVee@@IPAPAVaaa@@1@Z", "private: static class bar * __stdcall foo::bb::bar::ccccc<class aaa *>(class bar *,class ee *,unsigned int,class aaa **,class ee *)"},
|
{"??$ccccc@PAVaaa@@@bar@bb@foo@@DGPAV0@PAV0@PAVee@@IPAPAVaaa@@1@Z", "private: static class bar * __stdcall foo::bb::bar::ccccc<class aaa *>(class bar *,class ee *,unsigned int,class aaa **,class ee *)"},
|
||||||
};
|
};
|
||||||
|
|
|
@ -759,7 +759,16 @@ static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype_t* ct,
|
||||||
break;
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
/* not all the time is seems */
|
/* not all the time is seems */
|
||||||
|
if (in_args)
|
||||||
|
{
|
||||||
|
const char* ptr;
|
||||||
|
if (!(ptr = get_number(sym))) goto done;
|
||||||
|
ct->left = str_printf(sym, "`template-parameter-%s'", ptr);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if (!get_modified_type(ct, sym, pmt_ref, '?')) goto done;
|
if (!get_modified_type(ct, sym, pmt_ref, '?')) goto done;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'A': /* reference */
|
case 'A': /* reference */
|
||||||
case 'B': /* volatile reference */
|
case 'B': /* volatile reference */
|
||||||
|
|
Loading…
Reference in New Issue