Module: wine Branch: master Commit: 9a42affc344da1d68b7236b4e19b0adfb2a47b96 URL: https://gitlab.winehq.org/wine/wine/-/commit/9a42affc344da1d68b7236b4e19b0ad...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Dec 7 20:30:15 2023 +0100
winedump: Sync demangling code with msvcrt.
---
tools/winedump/msmangle.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/tools/winedump/msmangle.c b/tools/winedump/msmangle.c index 19ccc18f714..e49dd14ac2a 100644 --- a/tools/winedump/msmangle.c +++ b/tools/winedump/msmangle.c @@ -410,6 +410,28 @@ static BOOL get_qualified_type(struct datatype_t *ct, struct parsed_symbol* sym, ct->right = NULL; ct->flags = 0;
+ /* parse managed handle information */ + if (sym->current[0] == '$' && sym->current[1] == 'A') + { + sym->current += 2; + + switch (qualif) + { + case 'A': + case 'B': + ref = " %"; + break; + case 'P': + case 'Q': + case 'R': + case 'S': + ref = " ^"; + break; + default: + return FALSE; + } + } + if (get_qualifier(sym, &xdt2, &class)) { unsigned mark = sym->stack.num; @@ -482,7 +504,8 @@ static char* get_literal_string(struct parsed_symbol* sym) if (!((*sym->current >= 'A' && *sym->current <= 'Z') || (*sym->current >= 'a' && *sym->current <= 'z') || (*sym->current >= '0' && *sym->current <= '9') || - *sym->current == '_' || *sym->current == '$')) { + *sym->current == '_' || *sym->current == '$' || + *sym->current == '<' || *sym->current == '>')) { return NULL; } } while (*++sym->current != '@');