Eric Pouech : msvcrt: Fixed symbol unmangling for template-parameter-?? form, as well as test.
Module: wine Branch: master Commit: a940218c0b5b64f638b0e1678024659cd77e2089 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a940218c0b5b64f638b0e16780... Author: Eric Pouech <eric.pouech(a)orange.fr> Date: Mon Apr 28 21:18:20 2008 +0200 msvcrt: Fixed symbol unmangling for template-parameter-?? form, as well as test. Spotted by James Hawkins. --- dlls/msvcrt/tests/cpp.c | 2 +- dlls/msvcrt/undname.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dlls/msvcrt/tests/cpp.c b/dlls/msvcrt/tests/cpp.c index 2788a56..5daa4cc 100644 --- a/dlls/msvcrt/tests/cpp.c +++ b/dlls/msvcrt/tests/cpp.c @@ -982,7 +982,7 @@ static void test_demangle(void) { "?Qux(a)Bar@@0PAP6AHPAV1(a)AAH1PAH@ZA", "private: static int (__cdecl** Bar::Qux)(class Bar *,int &,int &,int *)" }, { "?Qux(a)Bar@@0PAP6AHPAV1(a)AAH1PAH@ZA", "Bar::Qux", 0x1800}, {"?$AAA@$DBAB@", "AAA<`template-parameter257'>"}, -{"?$AAA@$D?4@", "AAA<`template-parameter-5'>"}, +{"?$AAA@?C@", "AAA<`template-parameter-2'>"}, {"?$AAA(a)PAUBBB@@", "AAA<struct BBB *>"}, {"??$ccccc(a)PAVaaa@@@bar(a)bb@foo@@DGPAV0(a)PAV0@PAVee@@IPAPAVaaa@@1(a)Z", "private: static class bar * __stdcall foo::bb::bar::ccccc<class aaa *>(class bar *,class ee *,unsigned int,class aaa **,class ee *)"}, }; diff --git a/dlls/msvcrt/undname.c b/dlls/msvcrt/undname.c index 93030b2..f115dca 100644 --- a/dlls/msvcrt/undname.c +++ b/dlls/msvcrt/undname.c @@ -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 */
participants (1)
-
Alexandre Julliard