Piotr Caban (@piotr) commented about dlls/msvcrt/undname.c:
str_array_init(&array_pmt);
args = get_args(sym, &array_pmt, FALSE, '<', '>');
if (args) function_name = function_name ? str_printf(sym, "%s%s", function_name, args) : args;
sym->names.num = 0;
} switch (do_after) {
case 1: case 2:
if (!str_array_push(sym, dashed_null, -1, &sym->stack))
return FALSE;
break; case 4: sym->result = (char*)function_name; ret = TRUE; goto done;
The patch also affects do_after==3 (cast op) and do_after==4 (string literal) cases (maybe commit message can be improved). The do_after==3 case is kind of covered by next patch. It would be good to also cover do_after==4 case in tests. According to a quick test "_C" demangling is currently broken but a todo_wine test can still document it.
While it's not really related to the patch it would be good to define some kind of enum that can be used instead of 1..4 constants.
These are some general thoughts (I don't think that this patch should be blocked by anything above).