odbccp32: Use CRT allocation functions.

This commit is contained in:
Alex Henrie 2023-08-16 21:49:52 -06:00 committed by Alexandre Julliard
parent 81a5a8f46b
commit 79e78218ec

View file

@ -31,7 +31,6 @@
#include "winnls.h"
#include "sqlext.h"
#include "wine/debug.h"
#include "wine/heap.h"
#include "odbcinst.h"
@ -88,7 +87,7 @@ static void clear_errors(void)
num_errors = 0;
}
static inline WCHAR *heap_strdupAtoW(const char *str)
static inline WCHAR *strdupAtoW(const char *str)
{
LPWSTR ret = NULL;
@ -96,7 +95,7 @@ static inline WCHAR *heap_strdupAtoW(const char *str)
DWORD len;
len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
ret = heap_alloc(len*sizeof(WCHAR));
ret = malloc(len * sizeof(WCHAR));
if(ret)
MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len);
}
@ -125,7 +124,7 @@ static LPWSTR SQLInstall_strdup_multi(LPCSTR str)
;
len = MultiByteToWideChar(CP_ACP, 0, str, p - str, NULL, 0 );
ret = HeapAlloc(GetProcessHeap(), 0, (len+1)*sizeof(WCHAR));
ret = malloc((len + 1) * sizeof(WCHAR));
MultiByteToWideChar(CP_ACP, 0, str, p - str, ret, len );
ret[len] = 0;
@ -141,7 +140,7 @@ static LPWSTR SQLInstall_strdup(LPCSTR str)
return ret;
len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0 );
ret = HeapAlloc(GetProcessHeap(), 0, len*sizeof(WCHAR));
ret = malloc(len * sizeof(WCHAR));
MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len );
return ret;
@ -182,7 +181,7 @@ static BOOL SQLInstall_narrow(int mode, LPSTR buffer, LPCWSTR str, WORD str_leng
{
if (len > buffer_length)
{
pbuf = HeapAlloc(GetProcessHeap(), 0, len);
pbuf = malloc(len);
}
else
{
@ -212,7 +211,7 @@ static BOOL SQLInstall_narrow(int mode, LPSTR buffer, LPCWSTR str, WORD str_leng
}
if (pbuf != buffer)
{
HeapFree(GetProcessHeap(), 0, pbuf);
free(pbuf);
}
}
else
@ -247,7 +246,7 @@ static HMODULE load_config_driver(const WCHAR *driver)
return NULL;
}
filename = HeapAlloc(GetProcessHeap(), 0, size);
filename = malloc(size);
if(!filename)
{
RegCloseKey(hkeydriver);
@ -266,13 +265,13 @@ static HMODULE load_config_driver(const WCHAR *driver)
if(ret != ERROR_SUCCESS)
{
HeapFree(GetProcessHeap(), 0, filename);
free(filename);
push_error(ODBC_ERROR_COMPONENT_NOT_FOUND, odbc_error_component_not_found);
return NULL;
}
hmod = LoadLibraryExW(filename, NULL, LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_SEARCH_DEFAULT_DIRS);
HeapFree(GetProcessHeap(), 0, filename);
free(filename);
if(!hmod)
push_error(ODBC_ERROR_LOAD_LIB_FAILED, odbc_error_load_lib_failed);
@ -295,7 +294,7 @@ static BOOL write_config_value(const WCHAR *driver, const WCHAR *args)
{
WCHAR *divider, *value;
name = heap_alloc( (lstrlenW(args) + 1) * sizeof(WCHAR));
name = malloc((wcslen(args) + 1) * sizeof(WCHAR));
if(!name)
{
push_error(ODBC_ERROR_OUT_OF_MEM, odbc_error_out_of_mem);
@ -317,7 +316,7 @@ static BOOL write_config_value(const WCHAR *driver, const WCHAR *args)
if(RegSetValueExW(hkeydriver, name, 0, REG_SZ, (BYTE*)value,
(lstrlenW(value)+1) * sizeof(WCHAR)) != ERROR_SUCCESS)
ERR("Failed to write registry installed key\n");
heap_free(name);
free(name);
RegCloseKey(hkeydriver);
}
@ -333,7 +332,7 @@ static BOOL write_config_value(const WCHAR *driver, const WCHAR *args)
fail:
RegCloseKey(hkeydriver);
RegCloseKey(hkey);
heap_free(name);
free(name);
return FALSE;
}
@ -432,7 +431,7 @@ BOOL WINAPI SQLConfigDataSource(HWND hwnd, WORD request, LPCSTR driver, LPCSTR a
if (!mapped_request)
return FALSE;
driverW = heap_strdupAtoW(driver);
driverW = strdupAtoW(driver);
if (!driverW)
{
push_error(ODBC_ERROR_OUT_OF_MEM, odbc_error_out_of_mem);
@ -442,7 +441,7 @@ BOOL WINAPI SQLConfigDataSource(HWND hwnd, WORD request, LPCSTR driver, LPCSTR a
mod = load_config_driver(driverW);
if (!mod)
{
heap_free(driverW);
free(driverW);
return FALSE;
}
@ -465,7 +464,7 @@ BOOL WINAPI SQLConfigDataSource(HWND hwnd, WORD request, LPCSTR driver, LPCSTR a
attr = SQLInstall_strdup_multi(attributes);
if(attr)
ret = pConfigDSNW(hwnd, mapped_request, driverW, attr);
heap_free(attr);
free(attr);
}
}
@ -474,7 +473,7 @@ BOOL WINAPI SQLConfigDataSource(HWND hwnd, WORD request, LPCSTR driver, LPCSTR a
if (!ret)
push_error(ODBC_ERROR_REQUEST_FAILED, odbc_error_request_failed);
heap_free(driverW);
free(driverW);
FreeLibrary(mod);
return ret;
@ -524,7 +523,7 @@ BOOL WINAPI SQLConfigDriver(HWND hwnd, WORD request, LPCSTR driver,
TRACE("(%p %d %s %s %p %d %p)\n", hwnd, request, debugstr_a(driver),
debugstr_a(args), msg, msgmax, msgout);
driverW = heap_strdupAtoW(driver);
driverW = strdupAtoW(driver);
if(!driverW)
{
push_error(ODBC_ERROR_OUT_OF_MEM, odbc_error_out_of_mem);
@ -533,24 +532,24 @@ BOOL WINAPI SQLConfigDriver(HWND hwnd, WORD request, LPCSTR driver,
if(request == ODBC_CONFIG_DRIVER)
{
BOOL ret = FALSE;
WCHAR *argsW = heap_strdupAtoW(args);
WCHAR *argsW = strdupAtoW(args);
if(argsW)
{
ret = write_config_value(driverW, argsW);
HeapFree(GetProcessHeap(), 0, argsW);
free(argsW);
}
else
{
push_error(ODBC_ERROR_OUT_OF_MEM, odbc_error_out_of_mem);
}
HeapFree(GetProcessHeap(), 0, driverW);
free(driverW);
return ret;
}
hmod = load_config_driver(driverW);
HeapFree(GetProcessHeap(), 0, driverW);
free(driverW);
if(!hmod)
return FALSE;
@ -638,7 +637,7 @@ BOOL WINAPI SQLGetInstalledDriversW(WCHAR *buf, WORD size, WORD *sizeout)
}
valuelen = 256;
value = heap_alloc(valuelen * sizeof(WCHAR));
value = malloc(valuelen * sizeof(WCHAR));
size--;
@ -648,7 +647,7 @@ BOOL WINAPI SQLGetInstalledDriversW(WCHAR *buf, WORD size, WORD *sizeout)
res = RegEnumValueW(drivers, index, value, &len, NULL, NULL, NULL, NULL);
while (res == ERROR_MORE_DATA)
{
value = heap_realloc(value, ++len * sizeof(WCHAR));
value = realloc(value, ++len * sizeof(WCHAR));
res = RegEnumValueW(drivers, index, value, &len, NULL, NULL, NULL, NULL);
}
if (res == ERROR_SUCCESS)
@ -669,7 +668,7 @@ BOOL WINAPI SQLGetInstalledDriversW(WCHAR *buf, WORD size, WORD *sizeout)
buf[written++] = 0;
heap_free(value);
free(value);
RegCloseKey(drivers);
if (sizeout)
*sizeout = written;
@ -690,7 +689,7 @@ BOOL WINAPI SQLGetInstalledDrivers(char *buf, WORD size, WORD *sizeout)
return FALSE;
}
wbuf = heap_alloc(size * sizeof(WCHAR));
wbuf = malloc(size * sizeof(WCHAR));
if (!wbuf)
{
push_error(ODBC_ERROR_OUT_OF_MEM, odbc_error_out_of_mem);
@ -700,7 +699,7 @@ BOOL WINAPI SQLGetInstalledDrivers(char *buf, WORD size, WORD *sizeout)
ret = SQLGetInstalledDriversW(wbuf, size, &written);
if (!ret)
{
heap_free(wbuf);
free(wbuf);
return FALSE;
}
@ -708,7 +707,7 @@ BOOL WINAPI SQLGetInstalledDrivers(char *buf, WORD size, WORD *sizeout)
*sizeout = WideCharToMultiByte(CP_ACP, 0, wbuf, written, NULL, 0, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, wbuf, written, buf, size, NULL, NULL);
heap_free(wbuf);
free(wbuf);
return TRUE;
}
@ -825,13 +824,13 @@ int WINAPI SQLGetPrivateProfileString(LPCSTR section, LPCSTR entry,
if (!section || !defvalue || !buff)
return 0;
sectionW = heap_strdupAtoW(section);
filenameW = heap_strdupAtoW(filename);
sectionW = strdupAtoW(section);
filenameW = strdupAtoW(filename);
sectionkey = get_privateprofile_sectionkey(sectionW, filenameW);
heap_free(sectionW);
heap_free(filenameW);
free(sectionW);
free(filenameW);
if (sectionkey)
{
@ -999,7 +998,7 @@ static void write_registry_values(const WCHAR *regkey, const WCHAR *driver, cons
lstrcmpiW(translator, entry) == 0)
{
len = lstrlenW(path) + lstrlenW(slash) + lstrlenW(divider) + 1;
value = heap_alloc(len * sizeof(WCHAR));
value = malloc(len * sizeof(WCHAR));
if(!value)
{
ERR("Out of memory\n");
@ -1013,14 +1012,14 @@ static void write_registry_values(const WCHAR *regkey, const WCHAR *driver, cons
else
{
len = lstrlenW(divider) + 1;
value = heap_alloc(len * sizeof(WCHAR));
value = malloc(len * sizeof(WCHAR));
lstrcpyW(value, divider);
}
if (RegSetValueExW(hkeydriver, entry, 0, REG_SZ, (BYTE*)value,
(lstrlenW(value)+1)*sizeof(WCHAR)) != ERROR_SUCCESS)
ERR("Failed to write registry data %s %s\n", debugstr_w(entry), debugstr_w(value));
heap_free(value);
free(value);
}
else
{
@ -1110,8 +1109,8 @@ BOOL WINAPI SQLInstallDriverEx(LPCSTR lpszDriver, LPCSTR lpszPathIn,
}
out:
HeapFree(GetProcessHeap(), 0, driver);
HeapFree(GetProcessHeap(), 0, pathin);
free(driver);
free(pathin);
return ret;
}
@ -1266,7 +1265,7 @@ SQLRETURN WINAPI SQLInstallerError(WORD iError, DWORD *pfErrorCode,
wbuf = 0;
if (lpszErrorMsg && cbErrorMsgMax)
{
wbuf = HeapAlloc(GetProcessHeap(), 0, cbErrorMsgMax*sizeof(WCHAR));
wbuf = malloc(cbErrorMsgMax * sizeof(WCHAR));
if (!wbuf)
return SQL_ERROR;
}
@ -1275,7 +1274,7 @@ SQLRETURN WINAPI SQLInstallerError(WORD iError, DWORD *pfErrorCode,
{
WORD cbBuf = 0;
SQLInstall_narrow(1, lpszErrorMsg, wbuf, cbwbuf+1, cbErrorMsgMax, &cbBuf);
HeapFree(GetProcessHeap(), 0, wbuf);
free(wbuf);
if (pcbErrorMsg)
*pcbErrorMsg = cbBuf-1;
}
@ -1352,8 +1351,8 @@ BOOL WINAPI SQLInstallTranslatorEx(LPCSTR lpszTranslator, LPCSTR lpszPathIn,
}
out:
HeapFree(GetProcessHeap(), 0, translator);
HeapFree(GetProcessHeap(), 0, pathin);
free(translator);
free(pathin);
return ret;
}
@ -1509,7 +1508,7 @@ BOOL WINAPI SQLRemoveDriver(LPCSTR lpszDriver, BOOL fRemoveDSN,
ret = SQLRemoveDriverW(driver, fRemoveDSN, lpdwUsageCount);
HeapFree(GetProcessHeap(), 0, driver);
free(driver);
return ret;
}
@ -1559,7 +1558,7 @@ BOOL WINAPI SQLRemoveDSNFromIni(LPCSTR lpszDSN)
else
push_error(ODBC_ERROR_OUT_OF_MEM, odbc_error_out_of_mem);
heap_free(dsn);
free(dsn);
return ret;
}
@ -1640,7 +1639,7 @@ BOOL WINAPI SQLRemoveTranslator(LPCSTR lpszTranslator, LPDWORD lpdwUsageCount)
translator = SQLInstall_strdup(lpszTranslator);
ret = SQLRemoveTranslatorW(translator, lpdwUsageCount);
HeapFree(GetProcessHeap(), 0, translator);
free(translator);
return ret;
}
@ -1759,8 +1758,8 @@ BOOL WINAPI SQLWriteDSNToIni(LPCSTR lpszDSN, LPCSTR lpszDriver)
else
push_error(ODBC_ERROR_OUT_OF_MEM, odbc_error_out_of_mem);
heap_free(dsn);
heap_free(driver);
free(dsn);
free(driver);
return ret;
}
@ -1836,17 +1835,17 @@ BOOL WINAPI SQLWritePrivateProfileString(LPCSTR lpszSection, LPCSTR lpszEntry,
clear_errors();
TRACE("%s %s %s %s\n", lpszSection, lpszEntry, lpszString, lpszFilename);
sect = heap_strdupAtoW(lpszSection);
entry = heap_strdupAtoW(lpszEntry);
string = heap_strdupAtoW(lpszString);
file = heap_strdupAtoW(lpszFilename);
sect = strdupAtoW(lpszSection);
entry = strdupAtoW(lpszEntry);
string = strdupAtoW(lpszString);
file = strdupAtoW(lpszFilename);
ret = SQLWritePrivateProfileStringW(sect, entry, string, file);
heap_free(sect);
heap_free(entry);
heap_free(string);
heap_free(file);
free(sect);
free(entry);
free(string);
free(file);
return ret;
}