Commit a940218c authored by Eric Pouech's avatar Eric Pouech Committed by Alexandre Julliard

msvcrt: Fixed symbol unmangling for template-parameter-?? form, as well as test.

Spotted by James Hawkins.
parent b9f8a81d
......@@ -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", "Bar::Qux", 0x1800},
{"?$AAA@$DBAB@", "AAA<`template-parameter257'>"},
{"?$AAA@$D?4@", "AAA<`template-parameter-5'>"},
{"?$AAA@?C@", "AAA<`template-parameter-2'>"},
{"?$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 *)"},
};
......
......@@ -759,7 +759,16 @@ static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype_t* ct,
break;
case '?':
/* not all the time is seems */
if (!get_modified_type(ct, sym, pmt_ref, '?')) goto done;
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;
}
break;
case 'A': /* reference */
case 'B': /* volatile reference */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment