wininet unicode fixes
Mike McCormack
mike at codeweavers.com
Thu Aug 14 12:12:22 CDT 2003
ChangeLog:
* use WideByteToMultiChar not strlenW
* use HeapAlloc, not malloc
-------------- next part --------------
Index: dlls/wininet/http.c
===================================================================
RCS file: /home/wine/wine/dlls/wininet/http.c,v
retrieving revision 1.39
diff -u -r1.39 http.c
--- dlls/wininet/http.c 5 Aug 2003 18:31:02 -0000 1.39
+++ dlls/wininet/http.c 14 Aug 2003 16:15:02 -0000
@@ -302,34 +302,38 @@
if (lpszVerb)
{
- len = lstrlenW(lpszVerb)+1;
- if (!(szVerb = (CHAR *) HeapAlloc(GetProcessHeap(), 0, len * sizeof(CHAR))))
+ len = WideCharToMultiByte(CP_ACP, 0, lpszVerb, -1, NULL, 0, NULL, NULL);
+ szVerb = HeapAlloc(GetProcessHeap(), 0, len * sizeof(CHAR) );
+ if ( !szVerb )
goto end;
- WideCharToMultiByte(CP_ACP, -1, lpszVerb, -1, szVerb, len, NULL, NULL);
+ WideCharToMultiByte(CP_ACP, 0, lpszVerb, -1, szVerb, len, NULL, NULL);
}
if (lpszObjectName)
{
- len = lstrlenW(lpszObjectName)+1;
- if (!(szObjectName = (CHAR *) HeapAlloc(GetProcessHeap(), 0, len * sizeof(CHAR))))
+ len = WideCharToMultiByte(CP_ACP, 0, lpszObjectName, -1, NULL, 0, NULL, NULL);
+ szObjectName = HeapAlloc(GetProcessHeap(), 0, len * sizeof(CHAR) );
+ if ( !szObjectName )
goto end;
- WideCharToMultiByte(CP_ACP, -1, lpszObjectName, -1, szObjectName, len, NULL, NULL);
+ WideCharToMultiByte(CP_ACP, 0, lpszObjectName, -1, szObjectName, len, NULL, NULL);
}
if (lpszVersion)
{
- len = lstrlenW(lpszVersion)+1;
- if (!(szVersion = (CHAR *) HeapAlloc(GetProcessHeap(), 0, len * sizeof(CHAR))))
+ len = WideCharToMultiByte(CP_ACP, 0, lpszVersion, -1, NULL, 0, NULL, NULL);
+ szVersion = HeapAlloc(GetProcessHeap(), 0, len * sizeof(CHAR));
+ if ( !szVersion )
goto end;
- WideCharToMultiByte(CP_ACP, -1, lpszVersion, -1, szVersion, len, NULL, NULL);
+ WideCharToMultiByte(CP_ACP, 0, lpszVersion, -1, szVersion, len, NULL, NULL);
}
if (lpszReferrer)
{
- len = lstrlenW(lpszReferrer)+1;
- if (!(szReferrer = (CHAR *) HeapAlloc(GetProcessHeap(), 0, len * sizeof(CHAR))))
+ len = WideCharToMultiByte(CP_ACP, 0, lpszReferrer, -1, NULL, 0, NULL, NULL);
+ szReferrer = HeapAlloc(GetProcessHeap(), 0, len * sizeof(CHAR));
+ if ( !szReferrer )
goto end;
- WideCharToMultiByte(CP_ACP, -1, lpszReferrer, -1, szReferrer, len, NULL, NULL);
+ WideCharToMultiByte(CP_ACP, 0, lpszReferrer, -1, szReferrer, len, NULL, NULL);
}
acceptTypesCount = 0;
@@ -340,11 +344,12 @@
acceptTypesCount = 0;
while (lpszAcceptTypes[acceptTypesCount])
{
- len = lstrlenW(lpszAcceptTypes[acceptTypesCount])+1;
- if (!(szAcceptTypes[acceptTypesCount] = (CHAR *) HeapAlloc(GetProcessHeap(),
- 0, len * sizeof(CHAR))))
+ len = WideCharToMultiByte(CP_ACP, 0, lpszAcceptTypes[acceptTypesCount],
+ -1, NULL, 0, NULL, NULL);
+ szAcceptTypes[acceptTypesCount] = HeapAlloc(GetProcessHeap(), 0, len * sizeof(CHAR));
+ if (!szAcceptTypes[acceptTypesCount] )
goto end;
- WideCharToMultiByte(CP_ACP, -1, lpszAcceptTypes[acceptTypesCount],
+ WideCharToMultiByte(CP_ACP, 0, lpszAcceptTypes[acceptTypesCount],
-1, szAcceptTypes[acceptTypesCount], len, NULL, NULL);
acceptTypesCount++;
}
@@ -1009,14 +1014,13 @@
DWORD nLen=dwHeaderLength;
if(lpszHeaders!=NULL)
{
- if(nLen==-1)
- nLen=strlenW(lpszHeaders);
- szHeaders=(char*)malloc(nLen+1);
- WideCharToMultiByte(CP_ACP,0,lpszHeaders,nLen,szHeaders,nLen,NULL,NULL);
+ nLen=WideCharToMultiByte(CP_ACP,0,lpszHeaders,dwHeaderLength,NULL,0,NULL,NULL);
+ szHeaders=HeapAlloc(GetProcessHeap(),0,nLen);
+ WideCharToMultiByte(CP_ACP,0,lpszHeaders,dwHeaderLength,szHeaders,nLen,NULL,NULL);
}
- result=HttpSendRequestA(hHttpRequest, szHeaders, dwHeaderLength, lpOptional, dwOptionalLength);
+ result=HttpSendRequestA(hHttpRequest, szHeaders, nLen, lpOptional, dwOptionalLength);
if(szHeaders!=NULL)
- free(szHeaders);
+ HeapFree(GetProcessHeap(),0,szHeaders);
return result;
}
More information about the wine-patches
mailing list