]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/utilsexc.cpp
fix wxMSW shared builds
[wxWidgets.git] / src / msw / utilsexc.cpp
index 60fb2164e59e7d51783bc528d50c581dba58da35..f67e0eb11d9cf3024b5b7e6f2c9f2f5c1b200dd1 100644 (file)
@@ -1027,9 +1027,34 @@ long wxExecuteImpl(CharType **argv, int flags, wxProcess *handler)
     wxString command;
     command.reserve(1024);
 
+    wxString arg;
     for ( ;; )
     {
-        command += *argv++;
+        arg = *argv++;
+
+        bool quote;
+        if ( arg.empty() )
+        {
+            // we need to quote empty arguments, otherwise they'd just
+            // disappear
+            quote = true;
+        }
+        else // non-empty
+        {
+            // escape any quotes present in the string to avoid interfering
+            // with the command line parsing in the child process
+            arg.Replace("\"", "\\\"", true /* replace all */);
+
+            // and quote any arguments containing the spaces to prevent them from
+            // being broken down
+            quote = arg.find_first_of(" \t") != wxString::npos;
+        }
+
+        if ( quote )
+            command += '\"' + arg + '\"';
+        else
+            command += arg;
+
         if ( !*argv )
             break;