Return the correct value from GetPrivateProfileSectionA.
Copy/convert back the buffer in GetPrivateProfileSectionW.
Replace some output pointers str/wstr->ptr in kernel32.spec.

diff --git a/files/profile.c b/files/profile.c
index f535edd..9c22e3a 100644
--- a/files/profile.c
+++ b/files/profile.c
@@ -14,6 +14,7 @@
 #include "winbase.h"
 #include "wine/winbase16.h"
 #include "winuser.h"
+#include "winnls.h"
 #include "file.h"
 #include "heap.h"
 #include "debug.h"
@@ -1170,7 +1171,7 @@
     
     LeaveCriticalSection( &PROFILE_CritSect );
 
-    return 0;
+    return ret;
 }
 
 /***********************************************************************
@@ -1186,6 +1187,7 @@
     LPSTR bufferA   = HeapAlloc( GetProcessHeap(), 0, len );
     INT ret = GetPrivateProfileSectionA( sectionA, bufferA, len, 
 						filenameA );
+    MultiByteToWideChar(CP_ACP,0,bufferA,ret,buffer,len);
     HeapFree( GetProcessHeap(), 0, sectionA );
     HeapFree( GetProcessHeap(), 0, filenameA );
     HeapFree( GetProcessHeap(), 0, bufferA);