Description
if(... ||(sym_info->NameLen = UnDecorateSymbolName(name, sym_info->Name, sym_info->MaxNameLen, UNDNAME_NAME_ONLY) == 0))
Because priority order, first the == check is made, and hence sys_info->NameLen will be assigned 0 or 1.
Instead the probably expected behavior of assigning the length, and afterwards checking against 0.
Patch attached