From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/opcservices/package.c | 5 ++++- dlls/opcservices/tests/opcservices.c | 4 ---- 2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/dlls/opcservices/package.c b/dlls/opcservices/package.c index e080b386c61..bdd06ded69d 100644 --- a/dlls/opcservices/package.c +++ b/dlls/opcservices/package.c @@ -237,7 +237,10 @@ static HRESULT WINAPI opc_part_enum_MoveNext(IOpcPartEnumerator *iface, BOOL *ha if (has_part_collection_changed(part_enum)) return OPC_E_ENUM_COLLECTION_CHANGED;
- if (part_enum->part_set->count && (part_enum->pos == ~(size_t)0 || part_enum->pos < part_enum->part_set->count)) + if (part_enum->pos == part_enum->part_set->count) + return OPC_E_ENUM_CANNOT_MOVE_NEXT; + + if (part_enum->pos == ~(size_t)0 || part_enum->pos < part_enum->part_set->count) part_enum->pos++;
*has_next = part_enum->pos < part_enum->part_set->count; diff --git a/dlls/opcservices/tests/opcservices.c b/dlls/opcservices/tests/opcservices.c index b4569cd8302..3359fc9c4dc 100644 --- a/dlls/opcservices/tests/opcservices.c +++ b/dlls/opcservices/tests/opcservices.c @@ -679,9 +679,7 @@ static void test_part_enumerator(void)
ret = 123; hr = IOpcPartEnumerator_MoveNext(partenum, &ret); - todo_wine ok(hr == OPC_E_ENUM_CANNOT_MOVE_NEXT, "Unexpected hr %#lx.\n", hr); - todo_wine ok(ret == 123, "Unexpected result %d.\n", ret);
ret = TRUE; @@ -750,9 +748,7 @@ static void test_part_enumerator(void)
ret = 123; hr = IOpcPartEnumerator_MoveNext(partenum, &ret); - todo_wine ok(hr == OPC_E_ENUM_CANNOT_MOVE_NEXT, "Unexpected hr %#lx.\n", hr); - todo_wine ok(ret == 123, "Unexpected result %d.\n", ret);
part2 = (void *)0xdeadbeef;