Commit 0a6ea2d3 authored by Alex Henrie's avatar Alex Henrie Committed by Alexandre Julliard

shlwapi: Use CRT allocation functions.

parent 294be173
...@@ -55,8 +55,7 @@ static BOOL SHLWAPI_ParamAToW(LPCSTR lpszParam, LPWSTR lpszBuff, DWORD dwLen, ...@@ -55,8 +55,7 @@ static BOOL SHLWAPI_ParamAToW(LPCSTR lpszParam, LPWSTR lpszBuff, DWORD dwLen,
else else
{ {
/* Create a new buffer big enough for the string */ /* Create a new buffer big enough for the string */
*lpszOut = HeapAlloc(GetProcessHeap(), 0, *lpszOut = malloc(dwStrLen * sizeof(WCHAR));
dwStrLen * sizeof(WCHAR));
if (!*lpszOut) if (!*lpszOut)
return FALSE; return FALSE;
} }
...@@ -197,10 +196,10 @@ HRESULT WINAPI AssocQueryKeyA(ASSOCF cfFlags, ASSOCKEY assockey, LPCSTR pszAssoc ...@@ -197,10 +196,10 @@ HRESULT WINAPI AssocQueryKeyA(ASSOCF cfFlags, ASSOCKEY assockey, LPCSTR pszAssoc
} }
if (lpszAssocW != szAssocW) if (lpszAssocW != szAssocW)
HeapFree(GetProcessHeap(), 0, lpszAssocW); free(lpszAssocW);
if (lpszExtraW != szExtraW) if (lpszExtraW != szExtraW)
HeapFree(GetProcessHeap(), 0, lpszExtraW); free(lpszExtraW);
return hRet; return hRet;
} }
...@@ -272,8 +271,7 @@ HRESULT WINAPI AssocQueryStringA(ASSOCF cfFlags, ASSOCSTR str, LPCSTR pszAssoc, ...@@ -272,8 +271,7 @@ HRESULT WINAPI AssocQueryStringA(ASSOCF cfFlags, ASSOCSTR str, LPCSTR pszAssoc,
DWORD dwLenOut = *pcchOut; DWORD dwLenOut = *pcchOut;
if (dwLenOut >= MAX_PATH) if (dwLenOut >= MAX_PATH)
lpszReturnW = HeapAlloc(GetProcessHeap(), 0, lpszReturnW = malloc((dwLenOut + 1) * sizeof(WCHAR));
(dwLenOut + 1) * sizeof(WCHAR));
else else
dwLenOut = ARRAY_SIZE(szReturnW); dwLenOut = ARRAY_SIZE(szReturnW);
...@@ -290,14 +288,14 @@ HRESULT WINAPI AssocQueryStringA(ASSOCF cfFlags, ASSOCSTR str, LPCSTR pszAssoc, ...@@ -290,14 +288,14 @@ HRESULT WINAPI AssocQueryStringA(ASSOCF cfFlags, ASSOCSTR str, LPCSTR pszAssoc,
*pcchOut = dwLenOut; *pcchOut = dwLenOut;
if (lpszReturnW != szReturnW) if (lpszReturnW != szReturnW)
HeapFree(GetProcessHeap(), 0, lpszReturnW); free(lpszReturnW);
} }
} }
if (lpszAssocW != szAssocW) if (lpszAssocW != szAssocW)
HeapFree(GetProcessHeap(), 0, lpszAssocW); free(lpszAssocW);
if (lpszExtraW != szExtraW) if (lpszExtraW != szExtraW)
HeapFree(GetProcessHeap(), 0, lpszExtraW); free(lpszExtraW);
return hRet; return hRet;
} }
...@@ -364,8 +362,7 @@ HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF cfFlags, ASSOCSTR str, HKEY hkAssoc ...@@ -364,8 +362,7 @@ HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF cfFlags, ASSOCSTR str, HKEY hkAssoc
{ {
DWORD dwLenOut = *pcchOut; DWORD dwLenOut = *pcchOut;
if (dwLenOut >= MAX_PATH) if (dwLenOut >= MAX_PATH)
lpszReturnW = HeapAlloc(GetProcessHeap(), 0, lpszReturnW = malloc((dwLenOut + 1) * sizeof(WCHAR));
(dwLenOut + 1) * sizeof(WCHAR));
if (lpszReturnW) if (lpszReturnW)
{ {
...@@ -377,12 +374,12 @@ HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF cfFlags, ASSOCSTR str, HKEY hkAssoc ...@@ -377,12 +374,12 @@ HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF cfFlags, ASSOCSTR str, HKEY hkAssoc
*pcchOut = dwLenOut; *pcchOut = dwLenOut;
if (lpszReturnW != szReturnW) if (lpszReturnW != szReturnW)
HeapFree(GetProcessHeap(), 0, lpszReturnW); free(lpszReturnW);
} }
} }
if (lpszExtraW != szExtraW) if (lpszExtraW != szExtraW)
HeapFree(GetProcessHeap(), 0, lpszExtraW); free(lpszExtraW);
return hRet; return hRet;
} }
......
...@@ -258,7 +258,7 @@ INT_PTR WINAPI SHMessageBoxCheckA(HWND hWnd, LPCSTR lpszText, LPCSTR lpszTitle, ...@@ -258,7 +258,7 @@ INT_PTR WINAPI SHMessageBoxCheckA(HWND hWnd, LPCSTR lpszText, LPCSTR lpszTitle,
if (lpszText) if (lpszText)
{ {
iLen = MultiByteToWideChar(CP_ACP, 0, lpszText, -1, NULL, 0); iLen = MultiByteToWideChar(CP_ACP, 0, lpszText, -1, NULL, 0);
szTextBuff = HeapAlloc(GetProcessHeap(), 0, iLen * sizeof(WCHAR)); szTextBuff = malloc(iLen * sizeof(WCHAR));
MultiByteToWideChar(CP_ACP, 0, lpszText, -1, szTextBuff, iLen); MultiByteToWideChar(CP_ACP, 0, lpszText, -1, szTextBuff, iLen);
} }
...@@ -266,7 +266,7 @@ INT_PTR WINAPI SHMessageBoxCheckA(HWND hWnd, LPCSTR lpszText, LPCSTR lpszTitle, ...@@ -266,7 +266,7 @@ INT_PTR WINAPI SHMessageBoxCheckA(HWND hWnd, LPCSTR lpszText, LPCSTR lpszTitle,
iRetVal = SHMessageBoxCheckW(hWnd, szTextBuff, lpszTitle ? szTitleBuff : NULL, iRetVal = SHMessageBoxCheckW(hWnd, szTextBuff, lpszTitle ? szTitleBuff : NULL,
dwType, iRet, szIdBuff); dwType, iRet, szIdBuff);
HeapFree(GetProcessHeap(), 0, szTextBuff); free(szTextBuff);
return iRetVal; return iRetVal;
} }
......
...@@ -340,7 +340,7 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown) ...@@ -340,7 +340,7 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown)
dwNumValues = dwCount; dwNumValues = dwCount;
/* Note: dwCount = number of items + 1; The extra item is the end node */ /* Note: dwCount = number of items + 1; The extra item is the end node */
format = formatList = HeapAlloc(GetProcessHeap(), 0, dwCount * sizeof(FORMATETC)); format = formatList = malloc(dwCount * sizeof(FORMATETC));
if (!formatList) if (!formatList)
{ {
RegCloseKey(hDocs); RegCloseKey(hDocs);
...@@ -364,7 +364,7 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown) ...@@ -364,7 +364,7 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown)
(PBYTE)szValueBuff, &dwValueSize); (PBYTE)szValueBuff, &dwValueSize);
if (!dwRet) if (!dwRet)
{ {
HeapFree(GetProcessHeap(), 0, formatList); free(formatList);
RegCloseKey(hDocs); RegCloseKey(hDocs);
hr = E_FAIL; hr = E_FAIL;
goto exit; goto exit;
...@@ -392,7 +392,7 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown) ...@@ -392,7 +392,7 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown)
/* Create a clipboard enumerator */ /* Create a clipboard enumerator */
hr = CreateFormatEnumerator(dwNumValues, formatList, &pIEnumFormatEtc); hr = CreateFormatEnumerator(dwNumValues, formatList, &pIEnumFormatEtc);
HeapFree(GetProcessHeap(), 0, formatList); free(formatList);
if (FAILED(hr)) goto exit; if (FAILED(hr)) goto exit;
/* Set our enumerator as the browsers property */ /* Set our enumerator as the browsers property */
...@@ -1828,7 +1828,7 @@ BOOL WINAPI FDSA_Destroy(FDSA_info *info) ...@@ -1828,7 +1828,7 @@ BOOL WINAPI FDSA_Destroy(FDSA_info *info)
if(info->flags & FDSA_FLAG_INTERNAL_ALLOC) if(info->flags & FDSA_FLAG_INTERNAL_ALLOC)
{ {
HeapFree(GetProcessHeap(), 0, info->mem); free(info->mem);
return FALSE; return FALSE;
} }
...@@ -1850,11 +1850,11 @@ DWORD WINAPI FDSA_InsertItem(FDSA_info *info, DWORD where, const void *block) ...@@ -1850,11 +1850,11 @@ DWORD WINAPI FDSA_InsertItem(FDSA_info *info, DWORD where, const void *block)
{ {
DWORD size = (info->blocks_alloced + info->inc) * info->block_size; DWORD size = (info->blocks_alloced + info->inc) * info->block_size;
if(info->flags & 0x1) if(info->flags & 0x1)
info->mem = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, info->mem, size); info->mem = _recalloc(info->mem, 1, size);
else else
{ {
void *old_mem = info->mem; void *old_mem = info->mem;
info->mem = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size); info->mem = calloc(1, size);
memcpy(info->mem, old_mem, info->blocks_alloced * info->block_size); memcpy(info->mem, old_mem, info->blocks_alloced * info->block_size);
} }
info->blocks_alloced += info->inc; info->blocks_alloced += info->inc;
...@@ -2678,7 +2678,7 @@ DWORD WINAPI SHGetIniStringW(LPCWSTR appName, LPCWSTR keyName, LPWSTR out, ...@@ -2678,7 +2678,7 @@ DWORD WINAPI SHGetIniStringW(LPCWSTR appName, LPCWSTR keyName, LPWSTR out,
if(outLen == 0) if(outLen == 0)
return 0; return 0;
buf = HeapAlloc(GetProcessHeap(), 0, outLen * sizeof(WCHAR)); buf = malloc(outLen * sizeof(WCHAR));
if(!buf){ if(!buf){
*out = 0; *out = 0;
return 0; return 0;
...@@ -2690,7 +2690,7 @@ DWORD WINAPI SHGetIniStringW(LPCWSTR appName, LPCWSTR keyName, LPWSTR out, ...@@ -2690,7 +2690,7 @@ DWORD WINAPI SHGetIniStringW(LPCWSTR appName, LPCWSTR keyName, LPWSTR out,
else else
*out = 0; *out = 0;
HeapFree(GetProcessHeap(), 0, buf); free(buf);
return lstrlenW(out); return lstrlenW(out);
} }
...@@ -3796,7 +3796,7 @@ HKEY WINAPI SHGetShellKey(DWORD flags, LPCWSTR sub_key, BOOL create) ...@@ -3796,7 +3796,7 @@ HKEY WINAPI SHGetShellKey(DWORD flags, LPCWSTR sub_key, BOOL create)
else else
size_user = 0; size_user = 0;
path = HeapAlloc(GetProcessHeap(), 0, size_key+size_subkey+size_user+sizeof(WCHAR)); path = malloc(size_key + size_subkey + size_user + sizeof(WCHAR));
if(!path) { if(!path) {
ERR("Out of memory\n"); ERR("Out of memory\n");
return NULL; return NULL;
...@@ -3816,7 +3816,7 @@ HKEY WINAPI SHGetShellKey(DWORD flags, LPCWSTR sub_key, BOOL create) ...@@ -3816,7 +3816,7 @@ HKEY WINAPI SHGetShellKey(DWORD flags, LPCWSTR sub_key, BOOL create)
RegOpenKeyExW((flags&0xf)==SHKEY_Root_HKLM?HKEY_LOCAL_MACHINE:HKEY_CURRENT_USER, RegOpenKeyExW((flags&0xf)==SHKEY_Root_HKLM?HKEY_LOCAL_MACHINE:HKEY_CURRENT_USER,
path, 0, MAXIMUM_ALLOWED, &hkey); path, 0, MAXIMUM_ALLOWED, &hkey);
HeapFree(GetProcessHeap(), 0, path); free(path);
return hkey; return hkey;
} }
...@@ -4050,7 +4050,7 @@ INT WINAPIV ShellMessageBoxWrapW(HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText, ...@@ -4050,7 +4050,7 @@ INT WINAPIV ShellMessageBoxWrapW(HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText,
if (len) if (len)
{ {
szText = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR)); szText = malloc((len + 1) * sizeof(WCHAR));
if (szText) LoadStringW(hInstance, LOWORD(lpText), szText, len + 1); if (szText) LoadStringW(hInstance, LOWORD(lpText), szText, len + 1);
} }
pszText = szText; pszText = szText;
...@@ -4070,7 +4070,7 @@ INT WINAPIV ShellMessageBoxWrapW(HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText, ...@@ -4070,7 +4070,7 @@ INT WINAPIV ShellMessageBoxWrapW(HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText,
ret = MessageBoxW(hWnd, pszTemp, pszTitle, uType); ret = MessageBoxW(hWnd, pszTemp, pszTitle, uType);
HeapFree(GetProcessHeap(), 0, szText); free(szText);
LocalFree(pszTemp); LocalFree(pszTemp);
return ret; return ret;
} }
...@@ -4138,7 +4138,7 @@ PSECURITY_DESCRIPTOR WINAPI GetShellSecurityDescriptor(const PSHELL_USER_PERMISS ...@@ -4138,7 +4138,7 @@ PSECURITY_DESCRIPTOR WINAPI GetShellSecurityDescriptor(const PSHELL_USER_PERMISS
if (apUserPerm == NULL || cUserPerm <= 0) if (apUserPerm == NULL || cUserPerm <= 0)
return NULL; return NULL;
sidlist = HeapAlloc(GetProcessHeap(), 0, cUserPerm * sizeof(PSID)); sidlist = malloc(cUserPerm * sizeof(PSID));
if (!sidlist) if (!sidlist)
return NULL; return NULL;
...@@ -4235,7 +4235,7 @@ free_sids: ...@@ -4235,7 +4235,7 @@ free_sids:
if (!cur_user || sidlist[i] != cur_user) if (!cur_user || sidlist[i] != cur_user)
FreeSid(sidlist[i]); FreeSid(sidlist[i]);
} }
HeapFree(GetProcessHeap(), 0, sidlist); free(sidlist);
return psd; return psd;
} }
...@@ -4355,13 +4355,13 @@ INT WINAPI SHFormatDateTimeA(const FILETIME UNALIGNED *fileTime, DWORD *flags, ...@@ -4355,13 +4355,13 @@ INT WINAPI SHFormatDateTimeA(const FILETIME UNALIGNED *fileTime, DWORD *flags,
if (!buf || !size) if (!buf || !size)
return 0; return 0;
bufW = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR) * size); bufW = malloc(sizeof(WCHAR) * size);
retval = SHFormatDateTimeW(fileTime, flags, bufW, size); retval = SHFormatDateTimeW(fileTime, flags, bufW, size);
if (retval != 0) if (retval != 0)
retval = WideCharToMultiByte(CP_ACP, 0, bufW, -1, buf, size, NULL, NULL); retval = WideCharToMultiByte(CP_ACP, 0, bufW, -1, buf, size, NULL, NULL);
HeapFree(GetProcessHeap(), 0, bufW); free(bufW);
return retval; return retval;
} }
......
...@@ -275,7 +275,7 @@ static BOOL SHLWAPI_PathFindInOtherDirs(LPWSTR lpszFile, DWORD dwWhich) ...@@ -275,7 +275,7 @@ static BOOL SHLWAPI_PathFindInOtherDirs(LPWSTR lpszFile, DWORD dwWhich)
/* Try dirs listed in %PATH% */ /* Try dirs listed in %PATH% */
dwLenPATH = GetEnvironmentVariableW(szPath, buff, MAX_PATH); dwLenPATH = GetEnvironmentVariableW(szPath, buff, MAX_PATH);
if (!dwLenPATH || !(lpszPATH = HeapAlloc(GetProcessHeap(), 0, (dwLenPATH + 1) * sizeof (WCHAR)))) if (!dwLenPATH || !(lpszPATH = malloc((dwLenPATH + 1) * sizeof (WCHAR))))
return FALSE; return FALSE;
GetEnvironmentVariableW(szPath, lpszPATH, dwLenPATH + 1); GetEnvironmentVariableW(szPath, lpszPATH, dwLenPATH + 1);
...@@ -298,17 +298,17 @@ static BOOL SHLWAPI_PathFindInOtherDirs(LPWSTR lpszFile, DWORD dwWhich) ...@@ -298,17 +298,17 @@ static BOOL SHLWAPI_PathFindInOtherDirs(LPWSTR lpszFile, DWORD dwWhich)
if (!PathAppendW(buff, lpszFile)) if (!PathAppendW(buff, lpszFile))
{ {
HeapFree(GetProcessHeap(), 0, lpszPATH); free(lpszPATH);
return FALSE; return FALSE;
} }
if (PathFileExistsDefExtW(buff, dwWhich)) if (PathFileExistsDefExtW(buff, dwWhich))
{ {
lstrcpyW(lpszFile, buff); lstrcpyW(lpszFile, buff);
HeapFree(GetProcessHeap(), 0, lpszPATH); free(lpszPATH);
return TRUE; return TRUE;
} }
} }
HeapFree(GetProcessHeap(), 0, lpszPATH); free(lpszPATH);
return FALSE; return FALSE;
} }
......
...@@ -99,8 +99,8 @@ static ULONG WINAPI IStream_fnRelease(IStream *iface) ...@@ -99,8 +99,8 @@ static ULONG WINAPI IStream_fnRelease(IStream *iface)
if (!refCount) if (!refCount)
{ {
HeapFree(GetProcessHeap(),0,This->pbBuffer); free(This->pbBuffer);
HeapFree(GetProcessHeap(),0,This); free(This);
return 0; return 0;
} }
...@@ -150,7 +150,7 @@ static HRESULT WINAPI IStream_fnWrite (IStream * iface, const void* pv, ULONG cb ...@@ -150,7 +150,7 @@ static HRESULT WINAPI IStream_fnWrite (IStream * iface, const void* pv, ULONG cb
if (newLen > This->dwLength) if (newLen > This->dwLength)
{ {
LPBYTE newBuf = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, This->pbBuffer, newLen); BYTE *newBuf = _recalloc(This->pbBuffer, 1, newLen);
if (!newBuf) if (!newBuf)
return STG_E_INSUFFICIENTMEMORY; return STG_E_INSUFFICIENTMEMORY;
...@@ -209,7 +209,7 @@ static HRESULT WINAPI IStream_fnSetSize (IStream * iface, ULARGE_INTEGER libNewS ...@@ -209,7 +209,7 @@ static HRESULT WINAPI IStream_fnSetSize (IStream * iface, ULARGE_INTEGER libNewS
/* we cut off the high part here */ /* we cut off the high part here */
newLen = libNewSize.u.LowPart; newLen = libNewSize.u.LowPart;
newBuf = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, This->pbBuffer, newLen); newBuf = _recalloc(This->pbBuffer, 1, newLen);
if (!newBuf) if (!newBuf)
return STG_E_INSUFFICIENTMEMORY; return STG_E_INSUFFICIENTMEMORY;
...@@ -343,7 +343,7 @@ static ISHRegStream *IStream_Create(HKEY hKey, LPBYTE pbBuffer, DWORD dwLength) ...@@ -343,7 +343,7 @@ static ISHRegStream *IStream_Create(HKEY hKey, LPBYTE pbBuffer, DWORD dwLength)
{ {
ISHRegStream* regStream; ISHRegStream* regStream;
regStream = HeapAlloc(GetProcessHeap(), 0, sizeof(ISHRegStream)); regStream = malloc(sizeof(ISHRegStream));
if (regStream) if (regStream)
{ {
......
...@@ -376,13 +376,13 @@ static HRESULT _SHStrDupAToBSTR(LPCSTR src, BSTR *pBstrOut) ...@@ -376,13 +376,13 @@ static HRESULT _SHStrDupAToBSTR(LPCSTR src, BSTR *pBstrOut)
if (src) if (src)
{ {
INT len = MultiByteToWideChar(CP_ACP, 0, src, -1, NULL, 0); INT len = MultiByteToWideChar(CP_ACP, 0, src, -1, NULL, 0);
WCHAR* szTemp = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); WCHAR *szTemp = malloc(len * sizeof(WCHAR));
if (szTemp) if (szTemp)
{ {
MultiByteToWideChar(CP_ACP, 0, src, -1, szTemp, len); MultiByteToWideChar(CP_ACP, 0, src, -1, szTemp, len);
*pBstrOut = SysAllocString(szTemp); *pBstrOut = SysAllocString(szTemp);
HeapFree(GetProcessHeap(), 0, szTemp); free(szTemp);
if (*pBstrOut) if (*pBstrOut)
return S_OK; return S_OK;
...@@ -1155,7 +1155,7 @@ DWORD WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr, ...@@ -1155,7 +1155,7 @@ DWORD WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr,
lenW = len; lenW = len;
hr = ConvertINetUnicodeToMultiByte(&dwMode, CodePage, lpSrcStr, &lenW, NULL, &needed); hr = ConvertINetUnicodeToMultiByte(&dwMode, CodePage, lpSrcStr, &lenW, NULL, &needed);
needed++; needed++;
mem = HeapAlloc(GetProcessHeap(), 0, needed); mem = malloc(needed);
if (!mem) if (!mem)
return 0; return 0;
...@@ -1165,7 +1165,7 @@ DWORD WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr, ...@@ -1165,7 +1165,7 @@ DWORD WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr,
reqLen = SHTruncateString(mem, dstlen); reqLen = SHTruncateString(mem, dstlen);
if (reqLen > 0) memcpy(lpDstStr, mem, reqLen-1); if (reqLen > 0) memcpy(lpDstStr, mem, reqLen-1);
} }
HeapFree(GetProcessHeap(), 0, mem); free(mem);
return 0; return 0;
} }
default: default:
...@@ -1180,7 +1180,7 @@ DWORD WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr, ...@@ -1180,7 +1180,7 @@ DWORD WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr,
reqLen = WideCharToMultiByte(CodePage, 0, lpSrcStr, len, NULL, 0, NULL, NULL); reqLen = WideCharToMultiByte(CodePage, 0, lpSrcStr, len, NULL, 0, NULL, NULL);
if (reqLen) if (reqLen)
{ {
mem = HeapAlloc(GetProcessHeap(), 0, reqLen); mem = malloc(reqLen);
if (mem) if (mem)
{ {
WideCharToMultiByte(CodePage, 0, lpSrcStr, len, mem, reqLen, NULL, NULL); WideCharToMultiByte(CodePage, 0, lpSrcStr, len, mem, reqLen, NULL, NULL);
...@@ -1189,7 +1189,7 @@ DWORD WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr, ...@@ -1189,7 +1189,7 @@ DWORD WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr,
reqLen++; reqLen++;
lstrcpynA(lpDstStr, mem, reqLen); lstrcpynA(lpDstStr, mem, reqLen);
HeapFree(GetProcessHeap(), 0, mem); free(mem);
lpDstStr[reqLen-1] = '\0'; lpDstStr[reqLen-1] = '\0';
} }
} }
......
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