ChangeSet ID: 21323 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/18 06:06:00
Modified files: dlls/msvcrt : undname.c
Log message: Eric Pouech eric.pouech@wanadoo.fr Ensures, when we cannot demangle the string, to return the mangled name instead of a NULL pointer.
Patch: http://cvs.winehq.org/patch.py?id=21323
Old revision New revision Changes Path 1.4 1.5 +10 -12 wine/dlls/msvcrt/undname.c
Index: wine/dlls/msvcrt/undname.c diff -u -p wine/dlls/msvcrt/undname.c:1.4 wine/dlls/msvcrt/undname.c:1.5 --- wine/dlls/msvcrt/undname.c:1.4 18 Nov 2005 12: 6: 0 -0000 +++ wine/dlls/msvcrt/undname.c 18 Nov 2005 12: 6: 0 -0000 @@ -1152,6 +1152,7 @@ char* __unDNameEx(char* buffer, const ch void* unknown, unsigned short int flags) { struct parsed_symbol sym; + const char* result;
TRACE("(%p,%s,%d,%p,%p,%p,%x) stub!\n", buffer, mangled, buflen, memget, memfree, unknown, flags); @@ -1171,20 +1172,17 @@ char* __unDNameEx(char* buffer, const ch sym.mem_free_ptr = memfree; sym.current = mangled;
- if (symbol_demangle(&sym)) + result = symbol_demangle(&sym) ? sym.result : mangled; + if (buffer && buflen) { - if (buffer && buflen) - { - memcpy(buffer, sym.result, buflen - 1); - buffer[buflen - 1] = '\0'; - } - else - { - buffer = memget(strlen(sym.result) + 1); - if (buffer) strcpy(buffer, sym.result); - } + memcpy(buffer, result, buflen - 1); + buffer[buflen - 1] = '\0'; + } + else + { + buffer = memget(strlen(result) + 1); + if (buffer) strcpy(buffer, result); } - else buffer = NULL;
und_free_all(&sym);