mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-04 21:17:38 +00:00
odbccp32: Use CRT allocation functions.
This commit is contained in:
parent
81a5a8f46b
commit
79e78218ec
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue