Dmitry Timoshkov : scrrun: IEnumVARIANT:: Next should stop once it has enumerated the asked number the folder elements.

Alexandre Julliard julliard at winehq.org
Wed Jan 29 14:53:33 CST 2014


Module: wine
Branch: master
Commit: 553078161dbddf7cca44837663ef6858a62dd760
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=553078161dbddf7cca44837663ef6858a62dd760

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Tue Jan 28 11:36:11 2014 +0900

scrrun: IEnumVARIANT::Next should stop once it has enumerated the asked number the folder elements.

---

 dlls/scrrun/filesystem.c       |    5 +++--
 dlls/scrrun/tests/filesystem.c |    9 ---------
 2 files changed, 3 insertions(+), 11 deletions(-)

diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c
index 39b3241..630e7e3 100644
--- a/dlls/scrrun/filesystem.c
+++ b/dlls/scrrun/filesystem.c
@@ -526,8 +526,6 @@ static HRESULT WINAPI foldercoll_enumvariant_Next(IEnumVARIANT *iface, ULONG cel
 
     do
     {
-        if (count >= celt) break;
-
         if (is_dir_data(&data))
         {
             IFolder *folder;
@@ -543,6 +541,9 @@ static HRESULT WINAPI foldercoll_enumvariant_Next(IEnumVARIANT *iface, ULONG cel
             V_DISPATCH(&var[count]) = (IDispatch*)folder;
             count++;
         }
+
+        if (count >= celt) break;
+
     } while (FindNextFileW(handle, &data));
 
     if (fetched)
diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c
index 02a29e5..c764ae7 100644
--- a/dlls/scrrun/tests/filesystem.c
+++ b/dlls/scrrun/tests/filesystem.c
@@ -885,17 +885,9 @@ static void test_FolderCollection(void)
         VariantInit(&var);
         fetched = 0;
         hr = IEnumVARIANT_Next(enumvar, 1, &var, &fetched);
-if (i == 2) todo_wine
-{
-        ok(hr == S_OK, "%d: got 0x%08x\n", i, hr);
-        ok(fetched == 1, "%d: got %d\n", i, fetched);
-        ok(V_VT(&var) == VT_DISPATCH, "%d: got type %d\n", i, V_VT(&var));
-} else
-{
         ok(hr == S_OK, "%d: got 0x%08x\n", i, hr);
         ok(fetched == 1, "%d: got %d\n", i, fetched);
         ok(V_VT(&var) == VT_DISPATCH, "%d: got type %d\n", i, V_VT(&var));
-}
 
         hr = IDispatch_QueryInterface(V_DISPATCH(&var), &IID_IFolder, (void**)&folder);
         ok(hr == S_OK, "got 0x%08x\n", hr);
@@ -915,7 +907,6 @@ if (i == 2) todo_wine
         VariantClear(&var);
     }
 
-todo_wine
     ok(found_a == 1 && found_b == 1 && found_c == 1,
        "each folder should be found 1 time instead of %d/%d/%d\n",
        found_a, found_b, found_c);




More information about the wine-cvs mailing list