mirror of
https://github.com/reactos/reactos.git
synced 2024-07-05 12:15:46 +00:00
[MPR]
Import Wine commit: - 51b4a42969366cc409808aded23d3602a34206e2, Properly handle the count set to -1 when enumerating connections. This fixes 'net use' not being able to enumerate multiple connections served by multiple network providers. CORE-13475 svn path=/trunk/; revision=75172
This commit is contained in:
parent
ab30fb1d60
commit
f8e9e5ec4b
|
@ -1400,7 +1400,7 @@ static DWORD _copyStringToEnumW(const WCHAR *source, DWORD* left, void** end)
|
||||||
static DWORD _enumerateConnectedW(PWNetEnumerator enumerator, DWORD* user_count,
|
static DWORD _enumerateConnectedW(PWNetEnumerator enumerator, DWORD* user_count,
|
||||||
void* user_buffer, DWORD* user_size)
|
void* user_buffer, DWORD* user_size)
|
||||||
{
|
{
|
||||||
DWORD ret, index, count, size, i, left;
|
DWORD ret, index, count, total_count, size, i, left;
|
||||||
void* end;
|
void* end;
|
||||||
NETRESOURCEW* curr, * buffer;
|
NETRESOURCEW* curr, * buffer;
|
||||||
HANDLE* handles;
|
HANDLE* handles;
|
||||||
|
@ -1424,6 +1424,7 @@ static DWORD _enumerateConnectedW(PWNetEnumerator enumerator, DWORD* user_count,
|
||||||
curr = user_buffer;
|
curr = user_buffer;
|
||||||
end = (char *)user_buffer + size;
|
end = (char *)user_buffer + size;
|
||||||
count = *user_count;
|
count = *user_count;
|
||||||
|
total_count = 0;
|
||||||
|
|
||||||
ret = WN_NO_MORE_ENTRIES;
|
ret = WN_NO_MORE_ENTRIES;
|
||||||
for (index = 0; index < providerTable->numProviders; index++)
|
for (index = 0; index < providerTable->numProviders; index++)
|
||||||
|
@ -1443,6 +1444,7 @@ static DWORD _enumerateConnectedW(PWNetEnumerator enumerator, DWORD* user_count,
|
||||||
ret = providerTable->table[index].enumResource(handles[index],
|
ret = providerTable->table[index].enumResource(handles[index],
|
||||||
&count, buffer,
|
&count, buffer,
|
||||||
&size);
|
&size);
|
||||||
|
total_count += count;
|
||||||
if (ret == WN_MORE_DATA)
|
if (ret == WN_MORE_DATA)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1477,19 +1479,22 @@ static DWORD _enumerateConnectedW(PWNetEnumerator enumerator, DWORD* user_count,
|
||||||
++curr;
|
++curr;
|
||||||
}
|
}
|
||||||
|
|
||||||
count = *user_count - count;
|
if (*user_count != -1)
|
||||||
|
count = *user_count - total_count;
|
||||||
|
else
|
||||||
|
count = *user_count;
|
||||||
size = left;
|
size = left;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret != WN_SUCCESS || count == 0)
|
if (ret != WN_SUCCESS || total_count == 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count == 0)
|
if (total_count == 0)
|
||||||
ret = WN_NO_MORE_ENTRIES;
|
ret = WN_NO_MORE_ENTRIES;
|
||||||
|
|
||||||
*user_count = *user_count - count;
|
*user_count = total_count;
|
||||||
if (ret != WN_MORE_DATA && ret != WN_NO_MORE_ENTRIES)
|
if (ret != WN_MORE_DATA && ret != WN_NO_MORE_ENTRIES)
|
||||||
ret = WN_SUCCESS;
|
ret = WN_SUCCESS;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue