Commit 0df8b0a0 authored by Michael Stefaniuc's avatar Michael Stefaniuc Committed by Alexandre Julliard

msvcrt: Handle data types B,R,S in C++ symbol demangling.

parent 9aa0d88c
...@@ -374,8 +374,11 @@ static const char* get_modified_type(struct parsed_symbol* sym, char modif) ...@@ -374,8 +374,11 @@ static const char* get_modified_type(struct parsed_symbol* sym, char modif)
switch (modif) switch (modif)
{ {
case 'A': str_modif = " &"; break; case 'A': str_modif = " &"; break;
case 'B': str_modif = " & volatile"; break;
case 'P': str_modif = " *"; break; case 'P': str_modif = " *"; break;
case 'Q': str_modif = " * const"; break; case 'Q': str_modif = " * const"; break;
case 'R': str_modif = " * volatile"; break;
case 'S': str_modif = " * const volatile"; break;
case '?': str_modif = ""; break; case '?': str_modif = ""; break;
default: return NULL; default: return NULL;
} }
...@@ -645,11 +648,14 @@ static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype_t* ct, ...@@ -645,11 +648,14 @@ static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype_t* ct,
/* not all the time is seems */ /* not all the time is seems */
if (!(ct->left = get_modified_type(sym, '?'))) goto done; if (!(ct->left = get_modified_type(sym, '?'))) goto done;
break; break;
case 'A': case 'A': /* reference */
if (!(ct->left = get_modified_type(sym, 'A'))) goto done; case 'B': /* volatile reference */
if (!(ct->left = get_modified_type(sym, dt))) goto done;
break; break;
case 'Q': case 'Q': /* const pointer */
if (!(ct->left = get_modified_type(sym, in_args ? 'Q' : 'P'))) goto done; case 'R': /* volatile pointer */
case 'S': /* const volatile pointer */
if (!(ct->left = get_modified_type(sym, in_args ? dt : 'P'))) goto done;
break; break;
case 'P': /* Pointer */ case 'P': /* Pointer */
if (isdigit(*sym->current)) if (isdigit(*sym->current))
......
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