SHLWAPI: fix memory allocation problems
Mike McCormack
mike at codeweavers.com
Wed Jun 30 16:56:51 CDT 2004
ChangeLog:
* fix memory allocation problems
-------------- next part --------------
Index: dlls/shlwapi/assoc.c
===================================================================
RCS file: /home/wine/wine/dlls/shlwapi/assoc.c,v
retrieving revision 1.9
diff -u -r1.9 assoc.c
--- dlls/shlwapi/assoc.c 2 Mar 2004 20:55:57 -0000 1.9
+++ dlls/shlwapi/assoc.c 30 Jun 2004 22:54:49 -0000
@@ -75,7 +75,7 @@
{
IQueryAssociationsImpl* iface;
- iface =(IQueryAssociationsImpl*)HeapAlloc(GetProcessHeap(),0,sizeof(IQueryAssociationsImpl));
+ iface = HeapAlloc(GetProcessHeap(),0,sizeof(IQueryAssociationsImpl));
iface->lpVtbl = &IQueryAssociations_vtbl;
iface->ref = 1;
iface->hkeySource = NULL;
@@ -95,7 +95,7 @@
{
if (lpszParam)
{
- DWORD dwStrLen = lstrlenA(lpszParam);
+ DWORD dwStrLen = MultiByteToWideChar(CP_ACP, 0, lpszParam, -1, NULL, 0);
if (dwStrLen < dwLen)
{
@@ -104,12 +104,12 @@
else
{
/* Create a new buffer big enough for the string */
- *lpszOut = (LPWSTR)HeapAlloc(GetProcessHeap(), 0,
- (dwStrLen + 1) * sizeof(WCHAR));
+ *lpszOut = HeapAlloc(GetProcessHeap(), 0,
+ dwStrLen * sizeof(WCHAR));
if (!*lpszOut)
return FALSE;
}
- MultiByteToWideChar(0, 0, lpszParam, -1, *lpszOut, -1);
+ MultiByteToWideChar(CP_ACP, 0, lpszParam, -1, *lpszOut, dwStrLen);
}
else
*lpszOut = NULL;
@@ -298,7 +298,7 @@
DWORD dwLenOut = *pcchOut;
if (dwLenOut >= MAX_PATH)
- lpszReturnW = (LPWSTR)HeapAlloc(GetProcessHeap(), 0,
+ lpszReturnW = HeapAlloc(GetProcessHeap(), 0,
(dwLenOut + 1) * sizeof(WCHAR));
if (!lpszReturnW)
@@ -389,7 +389,7 @@
{
DWORD dwLenOut = *pcchOut;
if (dwLenOut >= MAX_PATH)
- lpszReturnW = (LPWSTR)HeapAlloc(GetProcessHeap(), 0,
+ lpszReturnW = HeapAlloc(GetProcessHeap(), 0,
(dwLenOut + 1) * sizeof(WCHAR));
if (lpszReturnW)
Index: dlls/shlwapi/reg.c
===================================================================
RCS file: /home/wine/wine/dlls/shlwapi/reg.c,v
retrieving revision 1.49
diff -u -r1.49 reg.c
--- dlls/shlwapi/reg.c 4 May 2004 04:13:06 -0000 1.49
+++ dlls/shlwapi/reg.c 30 Jun 2004 22:54:49 -0000
@@ -1204,8 +1204,8 @@
}
else
{
- nBytesToAlloc = lstrlenA(pvData) * sizeof (CHAR);
- szData = (LPSTR) LocalAlloc(GMEM_ZEROINIT, nBytesToAlloc + 1);
+ nBytesToAlloc = (lstrlenA(pvData)+1) * sizeof (CHAR);
+ szData = (LPSTR) LocalAlloc(GMEM_ZEROINIT, nBytesToAlloc );
lstrcpyA(szData, pvData);
dwExpDataLen = ExpandEnvironmentStringsA(szData, pvData, *pcbData / sizeof(CHAR));
if (dwExpDataLen > *pcbData) dwRet = ERROR_MORE_DATA;
@@ -1265,8 +1265,8 @@
}
else
{
- nBytesToAlloc = lstrlenW(pvData) * sizeof(WCHAR);
- szData = (LPWSTR) LocalAlloc(GMEM_ZEROINIT, nBytesToAlloc + 1);
+ nBytesToAlloc = (lstrlenW(pvData) + 1) * sizeof(WCHAR);
+ szData = (LPWSTR) LocalAlloc(GMEM_ZEROINIT, nBytesToAlloc );
lstrcpyW(szData, pvData);
dwExpDataLen = ExpandEnvironmentStringsW(szData, pvData, *pcbData/sizeof(WCHAR) );
if (dwExpDataLen > *pcbData) dwRet = ERROR_MORE_DATA;
Index: dlls/shlwapi/url.c
===================================================================
RCS file: /home/wine/wine/dlls/shlwapi/url.c,v
retrieving revision 1.34
diff -u -r1.34 url.c
--- dlls/shlwapi/url.c 19 May 2004 03:22:55 -0000 1.34
+++ dlls/shlwapi/url.c 30 Jun 2004 22:54:49 -0000
@@ -369,8 +369,8 @@
/* see if known scheme and return indicator number */
len = WideCharToMultiByte(0, 0, y->ap1, y->sizep1, 0, 0, 0, 0);
- cmpstr = (LPSTR)HeapAlloc(GetProcessHeap(), 0, len+1);
- WideCharToMultiByte(0, 0, y->ap1, y->sizep1, cmpstr, len+1, 0, 0);
+ cmpstr = (LPSTR)HeapAlloc(GetProcessHeap(), 0, len);
+ WideCharToMultiByte(0, 0, y->ap1, y->sizep1, cmpstr, len, 0, 0);
y->fcncde = URL_SCHEME_UNKNOWN;
inet_pro = shlwapi_schemes;
while (inet_pro->scheme_name) {
@@ -422,7 +422,7 @@
if(!pszUrl || !pszCanonicalized || !pcchCanonicalized)
return E_INVALIDARG;
- base = (LPWSTR) HeapAlloc(GetProcessHeap(), 0,
+ base = HeapAlloc(GetProcessHeap(), 0,
(2*INTERNET_MAX_URL_LENGTH) * sizeof(WCHAR));
canonical = base + INTERNET_MAX_URL_LENGTH;
@@ -1482,7 +1482,7 @@
TRACE("(in %s, out size %ld, flags %08lx) using W version\n",
debugstr_a(pszIn), *pcchOut, dwFlags);
- in = (LPWSTR) HeapAlloc(GetProcessHeap(), 0,
+ in = HeapAlloc(GetProcessHeap(), 0,
(2*INTERNET_MAX_URL_LENGTH) * sizeof(WCHAR));
out = in + INTERNET_MAX_URL_LENGTH;
@@ -1968,7 +1968,7 @@
LPWSTR in, out;
DWORD ret, len, len2;
- in = (LPWSTR) HeapAlloc(GetProcessHeap(), 0,
+ in = HeapAlloc(GetProcessHeap(), 0,
(2*INTERNET_MAX_URL_LENGTH) * sizeof(WCHAR));
out = in + INTERNET_MAX_URL_LENGTH;
More information about the wine-patches
mailing list