Commit 193cf50a authored by Alexandre Julliard's avatar Alexandre Julliard

Removed some of the calls to HEAP_strdup* functions.

parent 424a080c
......@@ -14,15 +14,15 @@
#include <string.h>
#include <stdlib.h>
#include "winnls.h"
#include "winerror.h"
#include "debugtools.h"
#include "heap.h"
#include "ddraw.h"
#include "d3d.h"
/* This for all the enumeration and creation of D3D-related objects */
#include "ddraw_private.h"
#include "debugtools.h"
#define MAX_DDRAW_DRIVERS 3
static const ddraw_driver* DDRAW_drivers[MAX_DDRAW_DRIVERS];
......@@ -93,14 +93,21 @@ static BOOL CALLBACK DirectDrawEnumerateExProcW(
GUID *lpGUID, LPSTR lpDriverDescription, LPSTR lpDriverName,
LPVOID lpContext, HMONITOR hm)
{
INT len;
BOOL bResult;
LPWSTR lpDriverDescriptionW, lpDriverNameW;
DirectDrawEnumerateProcData *pEPD = (DirectDrawEnumerateProcData*)lpContext;
LPWSTR lpDriverDescriptionW =
HEAP_strdupAtoW(GetProcessHeap(), 0, lpDriverDescription);
LPWSTR lpDriverNameW =
HEAP_strdupAtoW(GetProcessHeap(), 0, lpDriverName);
BOOL bResult = (*(LPDDENUMCALLBACKEXW *) pEPD->lpCallback)(
lpGUID, lpDriverDescriptionW, lpDriverNameW, pEPD->lpContext, hm);
len = MultiByteToWideChar( CP_ACP, 0, lpDriverDescription, -1, NULL, 0 );
lpDriverDescriptionW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, lpDriverDescription, -1, lpDriverDescriptionW, len );
len = MultiByteToWideChar( CP_ACP, 0, lpDriverName, -1, NULL, 0 );
lpDriverNameW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, lpDriverName, -1, lpDriverNameW, len );
bResult = (*(LPDDENUMCALLBACKEXW *) pEPD->lpCallback)(lpGUID, lpDriverDescriptionW,
lpDriverNameW, pEPD->lpContext, hm);
HeapFree(GetProcessHeap(), 0, lpDriverDescriptionW);
HeapFree(GetProcessHeap(), 0, lpDriverNameW);
......
......@@ -9,8 +9,8 @@
#include <unistd.h>
#include "winbase.h"
#include "winnls.h"
#include "winnetwk.h"
#include "heap.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(mpr);
......@@ -369,9 +369,12 @@ DWORD WINAPI WNetGetConnectionW( LPCWSTR lpLocalName,
LPWSTR lpRemoteName, LPDWORD lpBufferSize )
{
CHAR buf[200];
DWORD x = sizeof(buf);
LPSTR lnA = HEAP_strdupWtoA( GetProcessHeap(), 0, lpLocalName );
DWORD ret = WNetGetConnectionA( lnA, buf, &x );
DWORD ret, x = sizeof(buf);
INT len = WideCharToMultiByte( CP_ACP, 0, lpLocalName, -1, NULL, 0, NULL, NULL );
LPSTR lnA = HeapAlloc( GetProcessHeap(), 0, len );
WideCharToMultiByte( CP_ACP, 0, lpLocalName, -1, lnA, len, NULL, NULL );
ret = WNetGetConnectionA( lnA, buf, &x );
HeapFree( GetProcessHeap(), 0, lnA );
if (ret == WN_SUCCESS)
{
......
......@@ -24,7 +24,7 @@
#include "winreg.h"
#include "wownt32.h"
#include "wtypes.h"
#include "wine/unicode.h"
#include "wine/obj_base.h"
#include "wine/obj_clientserver.h"
#include "wine/obj_misc.h"
......@@ -33,7 +33,6 @@
#include "wine/winbase16.h"
#include "compobj_private.h"
#include "ifs.h"
#include "heap.h"
#include "debugtools.h"
......@@ -538,12 +537,14 @@ HRESULT WINAPI CoCreateGuid(
*/
HRESULT WINAPI CLSIDFromString(
LPCOLESTR idstr, /* [in] string representation of GUID */
CLSID *id /* [out] GUID represented by above string */
) {
LPOLESTR16 xid = HEAP_strdupWtoA(GetProcessHeap(),0,idstr);
HRESULT ret = CLSIDFromString16(xid,id);
CLSID *id ) /* [out] GUID represented by above string */
{
char xid[40];
HRESULT ret;
HeapFree(GetProcessHeap(),0,xid);
if (!WideCharToMultiByte( CP_ACP, 0, idstr, -1, xid, sizeof(xid), NULL, NULL ))
return CO_E_CLASSSTRING;
ret = CLSIDFromString16(xid,id);
if(ret != S_OK) { /* It appears a ProgID is also valid */
ret = CLSIDFromProgID(idstr, id);
}
......@@ -774,13 +775,30 @@ HRESULT WINAPI CLSIDFromProgID16(
*/
HRESULT WINAPI CLSIDFromProgID(
LPCOLESTR progid, /* [in] program id as found in registry */
LPCLSID riid /* [out] associated CLSID */
) {
LPOLESTR16 pid = HEAP_strdupWtoA(GetProcessHeap(),0,progid);
HRESULT ret = CLSIDFromProgID16(pid,riid);
LPCLSID riid ) /* [out] associated CLSID */
{
static const WCHAR clsidW[] = { '\\','C','L','S','I','D',0 };
char buf2[80];
DWORD buf2len = sizeof(buf2);
HKEY xhkey;
HeapFree(GetProcessHeap(),0,pid);
return ret;
WCHAR *buf = HeapAlloc( GetProcessHeap(),0,(strlenW(progid)+8) * sizeof(WCHAR) );
strcpyW( buf, progid );
strcatW( buf, clsidW );
if (RegOpenKeyW(HKEY_CLASSES_ROOT,buf,&xhkey))
{
HeapFree(GetProcessHeap(),0,buf);
return CO_E_CLASSSTRING;
}
HeapFree(GetProcessHeap(),0,buf);
if (RegQueryValueA(xhkey,NULL,buf2,&buf2len))
{
RegCloseKey(xhkey);
return CO_E_CLASSSTRING;
}
RegCloseKey(xhkey);
return CLSIDFromString16(buf2,riid);
}
......
......@@ -10,10 +10,10 @@
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "debugtools.h"
#include "winnls.h"
#include "ole2.h"
#include "olectl.h"
#include "heap.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(ole);
......@@ -233,9 +233,12 @@ ULONG WINAPI LHashValOfNameSys( SYSKIND skind, LCID lcid, LPCOLESTR str)
{
LPSTR strA;
ULONG res;
INT len;
if (!str) return 0;
strA = HEAP_strdupWtoA(GetProcessHeap(), 0, str);
len = WideCharToMultiByte( CP_ACP, 0, str, -1, NULL, 0, NULL, NULL );
strA = HeapAlloc( GetProcessHeap(), 0, len );
WideCharToMultiByte( CP_ACP, 0, str, -1, strA, len, NULL, NULL );
res = LHashValOfNameSysA(skind, lcid, strA);
HeapFree(GetProcessHeap(), 0, strA);
return res;
......
......@@ -20,7 +20,6 @@
#include "ole2.h"
#include "olectl.h"
#include "debugtools.h"
#include "heap.h"
#include "connpt.h" /* for CreateConnectionPoint */
DEFAULT_DEBUG_CHANNEL(ole);
......@@ -1335,6 +1334,7 @@ static HRESULT WINAPI OLEFontImpl_Load(
BYTE bVersion;
BYTE bAttributes;
BYTE bStringSize;
INT len;
_ICOM_THIS_From_IPersistStream(OLEFontImpl, iface);
......@@ -1393,7 +1393,6 @@ static HRESULT WINAPI OLEFontImpl_Load(
if (cbRead!=1)
return E_FAIL;
memset(readBuffer, 0, 0x100);
IStream_Read(pLoadStream, readBuffer, bStringSize, &cbRead);
if (cbRead!=bStringSize)
......@@ -1402,9 +1401,10 @@ static HRESULT WINAPI OLEFontImpl_Load(
if (this->description.lpstrName!=0)
HeapFree(GetProcessHeap(), 0, this->description.lpstrName);
this->description.lpstrName = HEAP_strdupAtoW(GetProcessHeap(),
HEAP_ZERO_MEMORY,
readBuffer);
len = MultiByteToWideChar( CP_ACP, 0, readBuffer, bStringSize, NULL, 0 );
this->description.lpstrName = HeapAlloc( GetProcessHeap(), 0, (len+1) * sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, readBuffer, bStringSize, this->description.lpstrName, len );
this->description.lpstrName[len] = 0;
return S_OK;
}
......@@ -1482,7 +1482,8 @@ static HRESULT WINAPI OLEFontImpl_Save(
* FontName
*/
if (this->description.lpstrName!=0)
bStringSize = lstrlenW(this->description.lpstrName);
bStringSize = WideCharToMultiByte( CP_ACP, 0, this->description.lpstrName,
strlenW(this->description.lpstrName), NULL, 0, NULL, NULL );
else
bStringSize = 0;
......@@ -1493,15 +1494,12 @@ static HRESULT WINAPI OLEFontImpl_Save(
if (bStringSize!=0)
{
writeBuffer = HEAP_strdupWtoA(GetProcessHeap(),
HEAP_ZERO_MEMORY,
this->description.lpstrName);
if (writeBuffer==0)
return E_OUTOFMEMORY;
if (!(writeBuffer = HeapAlloc( GetProcessHeap(), 0, bStringSize ))) return E_OUTOFMEMORY;
WideCharToMultiByte( CP_ACP, 0, this->description.lpstrName,
strlenW(this->description.lpstrName),
writeBuffer, bStringSize, NULL, NULL );
IStream_Write(pOutStream, writeBuffer, bStringSize, &cbWritten);
HeapFree(GetProcessHeap(), 0, writeBuffer);
if (cbWritten!=bStringSize)
......
......@@ -20,7 +20,6 @@
#include "winuser.h"
#include "wine/winbase16.h"
#include "cursoricon.h"
#include "heap.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(icon);
......@@ -572,8 +571,10 @@ HRESULT WINAPI PrivateExtractIconsA (
DWORD y ) /* [in] NOTE: 0x80 */
{
DWORD ret;
LPWSTR lpwstrFile = HEAP_strdupAtoW(GetProcessHeap(), 0, lpstrFile);
INT len = MultiByteToWideChar( CP_ACP, 0, lpstrFile, -1, NULL, 0 );
LPWSTR lpwstrFile = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, lpstrFile, -1, lpwstrFile, len );
ret = PrivateExtractIconsW(
lpwstrFile, nIndex, sizeX, sizeY, phicon, w, nIcons, y
);
......@@ -649,13 +650,13 @@ HRESULT WINAPI PrivateExtractIconExA (
UINT nIcons )
{
DWORD ret;
LPWSTR lpwstrFile = HEAP_strdupAtoW(GetProcessHeap(), 0, lpstrFile);
INT len = MultiByteToWideChar( CP_ACP, 0, lpstrFile, -1, NULL, 0 );
LPWSTR lpwstrFile = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) );
TRACE("%s 0x%08lx %p %p 0x%08x\n",
lpstrFile, nIndex, phIconLarge, phIconSmall, nIcons);
TRACE("%s 0x%08lx %p %p 0x%08x\n", lpstrFile, nIndex, phIconLarge, phIconSmall, nIcons);
MultiByteToWideChar( CP_ACP, 0, lpstrFile, -1, lpwstrFile, len );
ret = PrivateExtractIconExW(lpwstrFile,nIndex,phIconLarge, phIconSmall, nIcons);
HeapFree(GetProcessHeap(), 0, lpwstrFile);
return ret;
}
......
......@@ -11,8 +11,6 @@
#include "winnls.h"
#include "wine/winbase16.h"
#include "wine/winuser16.h"
#include "heap.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(resource);
......@@ -99,14 +97,19 @@ HACCEL WINAPI LoadAcceleratorsW(HINSTANCE instance,LPCWSTR lpTableName)
*/
HACCEL WINAPI LoadAcceleratorsA(HINSTANCE instance,LPCSTR lpTableName)
{
INT len;
LPWSTR uni;
HACCEL result;
if (HIWORD(lpTableName))
uni = HEAP_strdupAtoW( GetProcessHeap(), 0, lpTableName );
else
uni = (LPWSTR)lpTableName;
HACCEL result = 0;
if (!HIWORD(lpTableName)) return LoadAcceleratorsW( instance, (LPCWSTR)lpTableName );
len = MultiByteToWideChar( CP_ACP, 0, lpTableName, -1, NULL, 0 );
if ((uni = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) )))
{
MultiByteToWideChar( CP_ACP, 0, lpTableName, -1, uni, len );
result = LoadAcceleratorsW(instance,uni);
if (HIWORD(uni)) HeapFree( GetProcessHeap(), 0, uni);
HeapFree( GetProcessHeap(), 0, uni);
}
return result;
}
......
......@@ -16,7 +16,6 @@
#include <time.h>
#include "winbase.h"
#include "winerror.h"
#include "heap.h"
#include "wine/server.h"
#include "debugtools.h"
......@@ -49,10 +48,17 @@ HANDLE WINAPI FindFirstChangeNotificationW( LPCWSTR lpPathName,
BOOL bWatchSubtree,
DWORD dwNotifyFilter)
{
LPSTR nameA = HEAP_strdupWtoA( GetProcessHeap(), 0, lpPathName );
HANDLE ret = FindFirstChangeNotificationA( nameA, bWatchSubtree,
dwNotifyFilter );
if (nameA) HeapFree( GetProcessHeap(), 0, nameA );
HANDLE ret = INVALID_HANDLE_VALUE;
FIXME("this is not supported yet (non-trivial).\n");
SERVER_START_REQ( create_change_notification )
{
req->subtree = bWatchSubtree;
req->filter = dwNotifyFilter;
if (!wine_server_call_err( req )) ret = reply->handle;
}
SERVER_END_REQ;
return ret;
}
......
......@@ -9,7 +9,6 @@
#include "windef.h"
#include "wingdi.h"
#include "gdi.h"
#include "heap.h"
#include "enhmetafiledrv.h"
#include "debugtools.h"
......@@ -213,8 +212,11 @@ HDC WINAPI CreateEnhMetaFileA(
DWORD len1, len2, total;
if(filename)
filenameW = HEAP_strdupAtoW( GetProcessHeap(), 0, filename );
{
total = MultiByteToWideChar( CP_ACP, 0, filename, -1, NULL, 0 );
filenameW = HeapAlloc( GetProcessHeap(), 0, total * sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, filename, -1, filenameW, total );
}
if(description) {
len1 = strlen(description);
len2 = strlen(description + len1 + 1);
......
......@@ -7,7 +7,6 @@
#include "windef.h"
#include "wine/winbase16.h"
#include "gdi.h"
#include "heap.h"
#include "metafile.h"
#include "metafiledrv.h"
#include "debugtools.h"
......@@ -241,9 +240,12 @@ HDC WINAPI CreateMetaFileA(
HDC WINAPI CreateMetaFileW(LPCWSTR filename)
{
LPSTR filenameA;
DWORD len;
HDC hReturnDC;
filenameA = HEAP_strdupWtoA( GetProcessHeap(), 0, filename );
len = WideCharToMultiByte( CP_ACP, 0, filename, -1, NULL, 0, NULL, NULL );
filenameA = HeapAlloc( GetProcessHeap(), 0, len );
WideCharToMultiByte( CP_ACP, 0, filename, -1, filenameA, len, NULL, NULL );
hReturnDC = CreateMetaFileA(filenameA);
......
......@@ -20,7 +20,6 @@
#include "winnls.h"
#include "winerror.h"
#include "module.h"
#include "heap.h"
#include "stackframe.h"
#include "debugtools.h"
......@@ -143,6 +142,7 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_nameA( const IMAGE_RESOURCE
{
const IMAGE_RESOURCE_DIRECTORY *ret = NULL;
LPWSTR nameW;
INT len;
if (!HIWORD(name)) return find_entry_by_id( dir, LOWORD(name), root );
if (name[0] == '#')
......@@ -150,8 +150,10 @@ static const IMAGE_RESOURCE_DIRECTORY *find_entry_by_nameA( const IMAGE_RESOURCE
return find_entry_by_id( dir, atoi(name+1), root );
}
if ((nameW = HEAP_strdupAtoW( GetProcessHeap(), 0, name )))
len = MultiByteToWideChar( CP_ACP, 0, name, -1, NULL, 0 );
if ((nameW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) )))
{
MultiByteToWideChar( CP_ACP, 0, name, -1, nameW, len );
ret = find_entry_by_nameW( dir, nameW, root );
HeapFree( GetProcessHeap(), 0, nameW );
}
......
......@@ -38,10 +38,10 @@
#include "winreg.h"
#include "wine/winbase16.h"
#include "wine/server.h"
#include "wine/unicode.h"
#include "file.h"
#include "heap.h"
#include "options.h"
#include "wine/server.h"
#include "debugtools.h"
......@@ -1604,42 +1604,6 @@ LONG WINAPI RegUnLoadKeyA( HKEY hkey, LPCSTR lpSubKey )
/******************************************************************************
* RegRestoreKeyW [ADVAPI32.@]
*
* PARAMS
* hkey [I] Handle of key where restore begins
* lpFile [I] Address of filename containing saved tree
* dwFlags [I] Optional flags
*/
LONG WINAPI RegRestoreKeyW( HKEY hkey, LPCWSTR lpFile, DWORD dwFlags )
{
TRACE("(%x,%s,%ld)\n",hkey,debugstr_w(lpFile),dwFlags);
/* It seems to do this check before the hkey check */
if (!lpFile || !*lpFile)
return ERROR_INVALID_PARAMETER;
FIXME("(%x,%s,%ld): stub\n",hkey,debugstr_w(lpFile),dwFlags);
/* Check for file existence */
return ERROR_SUCCESS;
}
/******************************************************************************
* RegRestoreKeyA [ADVAPI32.@]
*/
LONG WINAPI RegRestoreKeyA( HKEY hkey, LPCSTR lpFile, DWORD dwFlags )
{
LPWSTR lpFileW = HEAP_strdupAtoW( GetProcessHeap(), 0, lpFile );
LONG ret = RegRestoreKeyW( hkey, lpFileW, dwFlags );
HeapFree( GetProcessHeap(), 0, lpFileW );
return ret;
}
/******************************************************************************
* RegReplaceKeyA [ADVAPI32.@]
*/
LONG WINAPI RegReplaceKeyA( HKEY hkey, LPCSTR lpSubKey, LPCSTR lpNewFile,
......
......@@ -39,7 +39,6 @@
#include "wine/wingdi16.h"
#include "bitmap.h"
#include "global.h"
#include "heap.h"
#include "metafile.h"
#include "debugtools.h"
......@@ -436,9 +435,16 @@ HMETAFILE WINAPI CopyMetaFileA(
HMETAFILE WINAPI CopyMetaFileW( HMETAFILE hSrcMetaFile,
LPCWSTR lpFilename )
{
LPSTR p = HEAP_strdupWtoA( GetProcessHeap(), 0, lpFilename );
HMETAFILE ret = CopyMetaFileA( hSrcMetaFile, p );
HMETAFILE ret = 0;
DWORD len = WideCharToMultiByte( CP_ACP, 0, lpFilename, -1, NULL, 0, NULL, NULL );
LPSTR p = HeapAlloc( GetProcessHeap(), 0, len );
if (p)
{
WideCharToMultiByte( CP_ACP, 0, lpFilename, -1, p, len, NULL, NULL );
ret = CopyMetaFileA( hSrcMetaFile, p );
HeapFree( GetProcessHeap(), 0, p );
}
return ret;
}
......
......@@ -17,7 +17,6 @@
#include "wingdi.h"
#include "winuser.h"
#include "wine/unicode.h"
#include "heap.h"
#include "options.h"
#include "winver.h"
#include "winnls.h"
......@@ -2243,12 +2242,9 @@ INT WINAPI LCMapStringW(
returned_len = wcstombs(src_native, srcstr_libc, src_native_len) + 1;
if(returned_len == 0)
{
LPSTR srcstr_ascii = (LPSTR)HEAP_strdupWtoA(GetProcessHeap(),
0, srcstr);
ERR("wcstombs failed. The string specified (%s) may contains an "
"invalid character.\n", srcstr_ascii);
ERR("wcstombs failed. The string specified (%s) may contain an invalid character.\n",
debugstr_w(srcstr));
SetLastError(ERROR_INVALID_PARAMETER);
if(srcstr_ascii) HeapFree(GetProcessHeap(), 0, srcstr_ascii);
if(srcstr_libc) HeapFree(GetProcessHeap(), 0, srcstr_libc);
if(src_native) HeapFree(GetProcessHeap(), 0, src_native);
setlocale(LC_COLLATE, lc_collate_default);
......
......@@ -27,7 +27,6 @@
#include "wine/winbase16.h"
#include "file.h"
#include "heap.h"
#include "debugtools.h"
......@@ -106,8 +105,12 @@ BOOL WINAPI SetFileAttributesA(LPCSTR lpFileName, DWORD attributes)
*/
BOOL WINAPI SetFileAttributesW(LPCWSTR lpFileName, DWORD attributes)
{
LPSTR afn = HEAP_strdupWtoA( GetProcessHeap(), 0, lpFileName );
BOOL res = SetFileAttributesA( afn, attributes );
BOOL res;
DWORD len = WideCharToMultiByte( CP_ACP, 0, lpFileName, -1, NULL, 0, NULL, NULL );
LPSTR afn = HeapAlloc( GetProcessHeap(), 0, len );
WideCharToMultiByte( CP_ACP, 0, lpFileName, -1, afn, len, NULL, NULL );
res = SetFileAttributesA( afn, attributes );
HeapFree( GetProcessHeap(), 0, afn );
return res;
}
......@@ -12,8 +12,9 @@ at a later date. */
#include <sys/time.h>
#include <unistd.h>
#include "windef.h"
#include "winbase.h"
#include "winnls.h"
#include "winerror.h"
#include "heap.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(win32);
......@@ -268,9 +269,13 @@ DWORD WINAPI GetCompressedFileSizeW(
*/
BOOL WINAPI SetComputerNameA( LPCSTR lpComputerName )
{
LPWSTR lpComputerNameW = HEAP_strdupAtoW(GetProcessHeap(),0,lpComputerName);
BOOL ret = SetComputerNameW(lpComputerNameW);
HeapFree(GetProcessHeap(),0,lpComputerNameW);
BOOL ret;
DWORD len = MultiByteToWideChar( CP_ACP, 0, lpComputerName, -1, NULL, 0 );
LPWSTR nameW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, lpComputerName, -1, nameW, len );
ret = SetComputerNameW( nameW );
HeapFree( GetProcessHeap(), 0, nameW );
return ret;
}
......
......@@ -37,7 +37,6 @@
#include "wine/winbase16.h"
#include "wine/winuser16.h"
#include "wine/exception.h"
#include "heap.h"
#include "palette.h"
#include "bitmap.h"
#include "cursoricon.h"
......@@ -2191,9 +2190,13 @@ HANDLE WINAPI LoadImageA( HINSTANCE hinst, LPCSTR name, UINT type,
HANDLE res;
LPWSTR u_name;
if (!HIWORD(name))
return LoadImageW(hinst, (LPWSTR)name, type, desiredx, desiredy, loadflags);
__TRY {
if (HIWORD(name)) u_name = HEAP_strdupAtoW(GetProcessHeap(), 0, name);
else u_name=(LPWSTR)name;
DWORD len = MultiByteToWideChar( CP_ACP, 0, name, -1, NULL, 0 );
u_name = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, name, -1, u_name, len );
}
__EXCEPT(page_fault) {
SetLastError( ERROR_INVALID_PARAMETER );
......@@ -2201,7 +2204,7 @@ HANDLE WINAPI LoadImageA( HINSTANCE hinst, LPCSTR name, UINT type,
}
__ENDTRY
res = LoadImageW(hinst, u_name, type, desiredx, desiredy, loadflags);
if (HIWORD(name)) HeapFree(GetProcessHeap(), 0, u_name);
HeapFree(GetProcessHeap(), 0, u_name);
return res;
}
......
......@@ -77,7 +77,6 @@
#include "winuser.h"
#include "wine/unicode.h"
#include "win.h"
#include "heap.h"
#include "nonclient.h"
#include "controls.h"
#include "user.h"
......@@ -1459,7 +1458,9 @@ LRESULT WINAPI DefFrameProcA( HWND hwnd, HWND hwndMDIClient,
{
case WM_SETTEXT:
{
LPWSTR text = HEAP_strdupAtoW( GetProcessHeap(), 0, (LPSTR)lParam );
DWORD len = MultiByteToWideChar( CP_ACP, 0, (LPSTR)lParam, -1, NULL, 0 );
LPWSTR text = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, (LPSTR)lParam, -1, text, len );
MDI_UpdateFrameText(hwnd, hwndMDIClient, MDI_REPAINTFRAME, text );
HeapFree( GetProcessHeap(), 0, text );
}
......
......@@ -11,7 +11,6 @@
#include "version.h"
#include "win.h"
#include "user.h"
#include "heap.h"
#include "dce.h"
#include "controls.h"
#include "cursoricon.h"
......@@ -259,22 +258,38 @@ DrawCaption (HWND hwnd, HDC hdc, const RECT *lpRect, UINT uFlags)
/***********************************************************************
* DrawCaptionTempA (USER32.@)
*
* PARAMS
*
* RETURNS
* Success:
* Failure:
*/
BOOL WINAPI
DrawCaptionTempA (HWND hwnd, HDC hdc, const RECT *rect, HFONT hFont,
BOOL WINAPI DrawCaptionTempA (HWND hwnd, HDC hdc, const RECT *rect, HFONT hFont,
HICON hIcon, LPCSTR str, UINT uFlags)
{
LPWSTR strW;
INT len;
BOOL ret = FALSE;
if (!(uFlags & DC_TEXT) || !str)
return DrawCaptionTempW( hwnd, hdc, rect, hFont, hIcon, NULL, uFlags );
len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 );
if ((strW = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) )))
{
MultiByteToWideChar( CP_ACP, 0, str, -1, strW, len );
ret = DrawCaptionTempW (hwnd, hdc, rect, hFont, hIcon, strW, uFlags);
HeapFree( GetProcessHeap (), 0, strW );
}
return ret;
}
/***********************************************************************
* DrawCaptionTempW (USER32.@)
*/
BOOL WINAPI DrawCaptionTempW (HWND hwnd, HDC hdc, const RECT *rect, HFONT hFont,
HICON hIcon, LPCWSTR str, UINT uFlags)
{
RECT rc = *rect;
TRACE("(%08x,%08x,%p,%08x,%08x,\"%s\",%08x)\n",
hwnd, hdc, rect, hFont, hIcon, str, uFlags);
TRACE("(%08x,%08x,%p,%08x,%08x,%s,%08x)\n",
hwnd, hdc, rect, hFont, hIcon, debugstr_w(str), uFlags);
/* drawing background */
if (uFlags & DC_INBUTTON) {
......@@ -332,13 +347,13 @@ DrawCaptionTempA (HWND hwnd, HDC hdc, const RECT *rect, HFONT hFont,
}
if (str)
DrawTextA (hdc, str, -1, &rc,
DrawTextW (hdc, str, -1, &rc,
DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX | DT_LEFT);
else {
CHAR szText[128];
WCHAR szText[128];
INT nLen;
nLen = GetWindowTextA (hwnd, szText, 128);
DrawTextA (hdc, szText, nLen, &rc,
nLen = GetWindowTextW (hwnd, szText, 128);
DrawTextW (hdc, szText, nLen, &rc,
DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX | DT_LEFT);
}
......@@ -357,27 +372,6 @@ DrawCaptionTempA (HWND hwnd, HDC hdc, const RECT *rect, HFONT hFont,
/***********************************************************************
* DrawCaptionTempW (USER32.@)
*
* PARAMS
*
* RETURNS
* Success:
* Failure:
*/
BOOL WINAPI
DrawCaptionTempW (HWND hwnd, HDC hdc, const RECT *rect, HFONT hFont,
HICON hIcon, LPCWSTR str, UINT uFlags)
{
LPSTR p = HEAP_strdupWtoA (GetProcessHeap (), 0, str);
BOOL res = DrawCaptionTempA (hwnd, hdc, rect, hFont, hIcon, p, uFlags);
HeapFree (GetProcessHeap (), 0, p);
return res;
}
/***********************************************************************
* AdjustWindowRect (USER.102)
*/
BOOL16 WINAPI AdjustWindowRect16( LPRECT16 rect, DWORD style, BOOL16 menu )
......
......@@ -12,7 +12,6 @@
#include "wingdi.h"
#include "winuser.h"
#include "wine/winuser16.h"
#include "heap.h"
#include "user.h"
#include "win.h"
#include "controls.h"
......@@ -364,12 +363,17 @@ BOOL WINAPI EnumDisplaySettingsA(
/***********************************************************************
* EnumDisplaySettingsW (USER32.@)
*/
BOOL WINAPI EnumDisplaySettingsW(LPCWSTR name,DWORD n,LPDEVMODEW devmode) {
LPSTR nameA = HEAP_strdupWtoA(GetProcessHeap(),0,name);
BOOL WINAPI EnumDisplaySettingsW(LPCWSTR name,DWORD n,LPDEVMODEW devmode)
{
DEVMODEA devmodeA;
BOOL ret = EnumDisplaySettingsA(nameA,n,&devmodeA);
BOOL ret;
DWORD len = WideCharToMultiByte( CP_ACP, 0, name, -1, NULL, 0, NULL, NULL );
LPSTR nameA = HeapAlloc( GetProcessHeap(), 0, len );
if (ret) {
WideCharToMultiByte( CP_ACP, 0, name, -1, nameA, len, NULL, NULL );
ret = EnumDisplaySettingsA(nameA,n,&devmodeA);
if (ret)
{
devmode->dmBitsPerPel = devmodeA.dmBitsPerPel;
devmode->dmPelsHeight = devmodeA.dmPelsHeight;
devmode->dmPelsWidth = devmodeA.dmPelsWidth;
......
......@@ -13,7 +13,6 @@
#include "wine/server.h"
#include "wine/unicode.h"
#include "win.h"
#include "heap.h"
#include "user.h"
#include "dce.h"
#include "controls.h"
......@@ -1602,6 +1601,7 @@ HWND WINAPI FindWindowExA( HWND parent, HWND child,
ATOM atom = 0;
LPWSTR buffer;
HWND hwnd;
INT len;
if (className)
{
......@@ -1613,8 +1613,11 @@ HWND WINAPI FindWindowExA( HWND parent, HWND child,
return 0;
}
}
if (!title) return WIN_FindWindow( parent, child, atom, NULL );
buffer = HEAP_strdupAtoW( GetProcessHeap(), 0, title );
len = MultiByteToWideChar( CP_ACP, 0, title, -1, NULL, 0 );
if (!(buffer = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return 0;
MultiByteToWideChar( CP_ACP, 0, title, -1, buffer, len );
hwnd = WIN_FindWindow( parent, child, atom, buffer );
HeapFree( GetProcessHeap(), 0, buffer );
return hwnd;
......
......@@ -12,7 +12,6 @@
#include "wine/winuser16.h"
#include "wine/winbase16.h"
#include "win.h"
#include "heap.h"
DEFAULT_DEBUG_CHANNEL(win);
......@@ -144,11 +143,20 @@ BOOL WINAPI WinHelpA( HWND hWnd, LPCSTR lpHelpFile, UINT wCommand,
/**********************************************************************
* WinHelpW (USER32.@)
*/
BOOL WINAPI WinHelpW( HWND hWnd, LPCWSTR helpFile, UINT command,
DWORD dwData )
BOOL WINAPI WinHelpW( HWND hWnd, LPCWSTR helpFile, UINT command, DWORD dwData )
{
LPSTR file = HEAP_strdupWtoA( GetProcessHeap(), 0, helpFile );
BOOL ret = WinHelpA( hWnd, file, command, dwData );
INT len;
LPSTR file;
BOOL ret = FALSE;
if (!helpFile) return WinHelpA( hWnd, NULL, command, dwData );
len = WideCharToMultiByte( CP_ACP, 0, helpFile, -1, NULL, 0, NULL, NULL );
if ((file = HeapAlloc( GetProcessHeap(), 0, len )))
{
WideCharToMultiByte( CP_ACP, 0, helpFile, -1, file, len, NULL, NULL );
ret = WinHelpA( hWnd, file, command, dwData );
HeapFree( GetProcessHeap(), 0, file );
}
return ret;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment