Fix for supporting DBCS.

diff --git a/memory/heap.c b/memory/heap.c
index e3ee8be..80ffe48 100644
--- a/memory/heap.c
+++ b/memory/heap.c
@@ -19,6 +19,7 @@
 #include "heap.h"
 #include "toolhelp.h"
 #include "debugtools.h"
+#include "winnls.h"
 
 DEFAULT_DEBUG_CHANNEL(heap);
 
@@ -1688,12 +1689,14 @@
 LPSTR HEAP_strdupWtoA( HANDLE heap, DWORD flags, LPCWSTR str )
 {
     LPSTR ret;
+    INT len;
 
     if (!str) return NULL;
-    ret = HeapAlloc( heap, flags, lstrlenW(str) + 1 );
+    len = WideCharToMultiByte( CP_ACP, 0, str, -1, NULL, 0, NULL, NULL );
+    ret = HeapAlloc( heap, flags, len );
     if(ret) {
         SET_EIP(ret);
-        lstrcpyWtoA( ret, str );
+        WideCharToMultiByte( CP_ACP, 0, str, -1, ret, len, NULL, NULL );
     }
     return ret;
 }