Pierre Schweitzer : mpr: Properly handle the count set to -1 when enumerating connections.
Alexandre Julliard
julliard at winehq.org
Fri Jun 23 13:08:00 CDT 2017
Module: wine
Branch: master
Commit: 51b4a42969366cc409808aded23d3602a34206e2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=51b4a42969366cc409808aded23d3602a34206e2
Author: Pierre Schweitzer <pierre at reactos.org>
Date: Fri Jun 23 13:53:43 2017 +0200
mpr: Properly handle the count set to -1 when enumerating connections.
Signed-off-by: Pierre Schweitzer <pierre at reactos.org>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mpr/wnet.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/dlls/mpr/wnet.c b/dlls/mpr/wnet.c
index cbbc1bd..abade95 100644
--- a/dlls/mpr/wnet.c
+++ b/dlls/mpr/wnet.c
@@ -1266,7 +1266,7 @@ static DWORD _copyStringToEnumW(const WCHAR *source, DWORD* left, void** end)
static DWORD _enumerateConnectedW(PWNetEnumerator enumerator, DWORD* user_count,
void* user_buffer, DWORD* user_size)
{
- DWORD ret, index, count, size, i, left;
+ DWORD ret, index, count, total_count, size, i, left;
void* end;
NETRESOURCEW* curr, * buffer;
HANDLE* handles;
@@ -1290,6 +1290,7 @@ static DWORD _enumerateConnectedW(PWNetEnumerator enumerator, DWORD* user_count,
curr = user_buffer;
end = (char *)user_buffer + size;
count = *user_count;
+ total_count = 0;
ret = WN_NO_MORE_ENTRIES;
for (index = 0; index < providerTable->numProviders; index++)
@@ -1309,6 +1310,7 @@ static DWORD _enumerateConnectedW(PWNetEnumerator enumerator, DWORD* user_count,
ret = providerTable->table[index].enumResource(handles[index],
&count, buffer,
&size);
+ total_count += count;
if (ret == WN_MORE_DATA)
break;
@@ -1343,19 +1345,22 @@ static DWORD _enumerateConnectedW(PWNetEnumerator enumerator, DWORD* user_count,
++curr;
}
- count = *user_count - count;
+ if (*user_count != -1)
+ count = *user_count - total_count;
+ else
+ count = *user_count;
size = left;
}
- if (ret != WN_SUCCESS || count == 0)
+ if (ret != WN_SUCCESS || total_count == 0)
break;
}
}
- if (count == 0)
+ if (total_count == 0)
ret = WN_NO_MORE_ENTRIES;
- *user_count = *user_count - count;
+ *user_count = total_count;
if (ret != WN_MORE_DATA && ret != WN_NO_MORE_ENTRIES)
ret = WN_SUCCESS;
More information about the wine-cvs
mailing list