mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-19 20:28:24 +00:00
Ensure A->W version of InternetCrackURL passes correct length values,
and associated tests.
This commit is contained in:
parent
98efef18d4
commit
2f30d307df
|
@ -1083,6 +1083,11 @@ BOOL WINAPI InternetCrackUrlA(LPCSTR lpszUrl, DWORD dwUrlLength, DWORD dwFlags,
|
|||
if(dwUrlLength<=0)
|
||||
dwUrlLength=-1;
|
||||
nLength=MultiByteToWideChar(CP_ACP,0,lpszUrl,dwUrlLength,NULL,0);
|
||||
|
||||
/* if dwUrlLength=-1 then nLength includes null but length to
|
||||
InternetCrackUrlW should not include it */
|
||||
if (dwUrlLength == -1) nLength--;
|
||||
|
||||
lpwszUrl=HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WCHAR)*nLength);
|
||||
MultiByteToWideChar(CP_ACP,0,lpszUrl,dwUrlLength,lpwszUrl,nLength);
|
||||
|
||||
|
|
|
@ -10,6 +10,11 @@
|
|||
|
||||
#define TEST_URL "http://www.winehq.org/site/about"
|
||||
#define TEST_URL_PATH "/site/about"
|
||||
#define TEST_URL2 "http://www.myserver.com/myscript.php?arg=1"
|
||||
#define TEST_URL2_SERVER "www.myserver.com"
|
||||
#define TEST_URL2_PATH "/myscript.php"
|
||||
#define TEST_URL2_PATHEXTRA "/myscript.php?arg=1"
|
||||
#define TEST_URL2_EXTRA "?arg=1"
|
||||
|
||||
int goon = 0;
|
||||
|
||||
|
@ -278,6 +283,35 @@ void InternetCrackUrl_test(void)
|
|||
ret = InternetCrackUrl(TEST_URL, 0,0,&urlComponents);
|
||||
ok( ret, "InternetCrackUrl failed, error %lx\n",GetLastError());
|
||||
ok((strcmp(TEST_URL_PATH,path) == 0),"path cracked wrong\n");
|
||||
|
||||
/* Bug 1805: Confirm the returned lengths are correct: */
|
||||
/* 1. When extra info split out explicitly */
|
||||
ZeroMemory(&urlComponents, sizeof(urlComponents));
|
||||
urlComponents.dwStructSize = sizeof(urlComponents);
|
||||
urlComponents.dwHostNameLength = 1;
|
||||
urlComponents.dwUrlPathLength = 1;
|
||||
urlComponents.dwExtraInfoLength = 1;
|
||||
ok(InternetCrackUrlA(TEST_URL2, 0, 0, &urlComponents),"InternetCrackUrl failed, error 0x%lx\n", GetLastError());
|
||||
ok(urlComponents.dwUrlPathLength == strlen(TEST_URL2_PATH),".dwUrlPathLength should be %d, but is %ld\n", strlen(TEST_URL2_PATH), urlComponents.dwUrlPathLength);
|
||||
ok(!strncmp(urlComponents.lpszUrlPath,TEST_URL2_PATH,strlen(TEST_URL2_PATH)),"lpszUrlPath should be %s but is %s\n", TEST_URL2_PATH, urlComponents.lpszUrlPath);
|
||||
ok(urlComponents.dwHostNameLength == strlen(TEST_URL2_SERVER),".dwHostNameLength should be %d, but is %ld\n", strlen(TEST_URL2_SERVER), urlComponents.dwHostNameLength);
|
||||
ok(!strncmp(urlComponents.lpszHostName,TEST_URL2_SERVER,strlen(TEST_URL2_SERVER)),"lpszHostName should be %s but is %s\n", TEST_URL2_SERVER, urlComponents.lpszHostName);
|
||||
ok(urlComponents.dwExtraInfoLength == strlen(TEST_URL2_EXTRA),".dwExtraInfoLength should be %d, but is %ld\n", strlen(TEST_URL2_EXTRA), urlComponents.dwExtraInfoLength);
|
||||
ok(!strncmp(urlComponents.lpszExtraInfo,TEST_URL2_EXTRA,strlen(TEST_URL2_EXTRA)),"lpszExtraInfo should be %s but is %s\n", TEST_URL2_EXTRA, urlComponents.lpszHostName);
|
||||
|
||||
/* 2. When extra info is not split out explicitly and is in url path */
|
||||
ZeroMemory(&urlComponents, sizeof(urlComponents));
|
||||
urlComponents.dwStructSize = sizeof(urlComponents);
|
||||
urlComponents.dwHostNameLength = 1;
|
||||
urlComponents.dwUrlPathLength = 1;
|
||||
ok(InternetCrackUrlA(TEST_URL2, 0, 0, &urlComponents),"InternetCrackUrl failed with GLE 0x%lx\n",GetLastError());
|
||||
ok(urlComponents.dwUrlPathLength == strlen(TEST_URL2_PATHEXTRA),".dwUrlPathLength should be %d, but is %ld\n", strlen(TEST_URL2_PATHEXTRA), urlComponents.dwUrlPathLength);
|
||||
ok(!strncmp(urlComponents.lpszUrlPath,TEST_URL2_PATHEXTRA,strlen(TEST_URL2_PATHEXTRA)),"lpszUrlPath should be %s but is %s\n", TEST_URL2_PATHEXTRA, urlComponents.lpszUrlPath);
|
||||
ok(urlComponents.dwHostNameLength == strlen(TEST_URL2_SERVER),".dwHostNameLength should be %d, but is %ld\n", strlen(TEST_URL2_SERVER), urlComponents.dwHostNameLength);
|
||||
ok(!strncmp(urlComponents.lpszHostName,TEST_URL2_SERVER,strlen(TEST_URL2_SERVER)),"lpszHostName should be %s but is %s\n", TEST_URL2_SERVER, urlComponents.lpszHostName);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
void InternetCrackUrlW_test(void)
|
||||
|
|
Loading…
Reference in a new issue