Removed HEAP_strdupA.

diff --git a/loader/elf.c b/loader/elf.c
index ed7ac6a..aa864ac 100644
--- a/loader/elf.c
+++ b/loader/elf.c
@@ -17,7 +17,6 @@
 #include <sys/types.h>
 
 #include "snoop.h"
-#include "heap.h"
 #include "file.h"
 #include "module.h"
 #include "debugtools.h"
@@ -193,16 +192,17 @@
 		/* Function@nrofargs usually marks a stdcall function 
 		 * with nrofargs bytes that are popped at the end
 		 */
-		if (strchr(funcName,'@')) {
-			LPSTR	t,fn = HEAP_strdupA( GetProcessHeap(), 0, funcName );
-
-			t = strchr(fn,'@');
-			*t = '\0';
-			nrofargs = 0;
-			sscanf(t+1,"%d",&nrofargs);
-			fun = wine_dlsym(wm->dlhandle,fn,error,sizeof(error));
-			HeapFree( GetProcessHeap(), 0, fn );
-		}
+            LPCSTR t;
+            if ((t = strchr(funcName,'@')))
+            {
+                LPSTR fn = HeapAlloc( GetProcessHeap(), 0, t - funcName + 1 );
+                memcpy( fn, funcName, t - funcName );
+                fn[t - funcName] = 0;
+                nrofargs = 0;
+                sscanf(t+1,"%d",&nrofargs);
+                fun = wine_dlsym(wm->dlhandle,fn,error,sizeof(error));
+                HeapFree( GetProcessHeap(), 0, fn );
+            }
 	}
 	/* We sometimes have Win32 dlls implemented using stdcall but UNIX 
 	 * dlls using cdecl. If we find out the number of args the function