regsvr32: Process flags before files (bug 38870)

Hugh McMaster hugh.mcmaster at outlook.com
Mon Aug 31 04:51:44 CDT 2015


Fixes 28 test failures (from 79 existing failures and a total of 168 tests).
---
 programs/regsvr32/regsvr32.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/programs/regsvr32/regsvr32.c b/programs/regsvr32/regsvr32.c
index 449124f..8d1ab17 100644
--- a/programs/regsvr32/regsvr32.c
+++ b/programs/regsvr32/regsvr32.c
@@ -231,10 +231,8 @@ int wmain(int argc, WCHAR* argv[])
 
     OleInitialize(NULL);
 
-    /* Strictly, the Microsoft version processes all the flags before
+    /* We mirror the Microsoft version by processing all of the flags before
      * the files (e.g. regsvr32 file1 /s file2 is silent even for file1).
-     * For ease, we will not replicate that and will process the arguments
-     * in order.
      *
      * Note the complication that this version may be passed Unix format filenames
      * which could be mistaken for flags. The Windows version conveniently
@@ -270,8 +268,13 @@ int wmain(int argc, WCHAR* argv[])
                 output_write(STRING_USAGE);
                 return 1;
             }
+            argv[i] = NULL;
         }
-        else
+    }
+
+    for (i = 1; i < argc; i++)
+    {
+        if (argv[i])
         {
             WCHAR *DllName = argv[i];
             int res = 0;
-- 
1.9.1




More information about the wine-patches mailing list