wine/dlls/msvcrt undname.c

Alexandre Julliard julliard at wine.codeweavers.com
Fri Nov 18 06:06:00 CST 2005


ChangeSet ID:	21323
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/18 06:06:00

Modified files:
	dlls/msvcrt    : undname.c 

Log message:
	Eric Pouech <eric.pouech at 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);
 



More information about the wine-cvs mailing list