aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/java/lang/natWin32Process.cc17
2 files changed, 14 insertions, 8 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index b3d2005..c340717 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2003-03-01 Mohan Embar <gnustuff@thisiscool.com>
+
+ * java/lang/natWin32Process.cc (startProcess): Double-quote each
+ program array element passed to CreateProcess.
+
2003-03-01 Tom Tromey <tromey@redhat.com>
* java/rmi/registry/RegistryHandler.java: Deprecate.
diff --git a/libjava/java/lang/natWin32Process.cc b/libjava/java/lang/natWin32Process.cc
index 38e6f91..ff7ddb5 100644
--- a/libjava/java/lang/natWin32Process.cc
+++ b/libjava/java/lang/natWin32Process.cc
@@ -136,21 +136,22 @@ java::lang::ConcreteProcess::startProcess (jstringArray progarray,
int cmdLineLen = 0;
for (int i = 0; i < progarray->length; ++i)
- cmdLineLen += (_Jv_GetStringUTFLength (elts[i]) + 1);
+ cmdLineLen += (_Jv_GetStringUTFLength (elts[i]) + 3);
char *cmdLine = (char *) _Jv_Malloc (cmdLineLen + 1);
+ char *cmdLineCurPos = cmdLine;
- int j = 0;
for (int i = 0; i < progarray->length; ++i)
{
+ if (i > 0)
+ *cmdLineCurPos++ = ' ';
+ *cmdLineCurPos++ = '\"';
jsize s = _Jv_GetStringUTFLength (elts[i]);
- _Jv_GetStringUTFRegion (elts[i], 0, s, (cmdLine + j));
-
- j += s;
- *(cmdLine + j) = ' ';
- j++;
+ _Jv_GetStringUTFRegion (elts[i], 0, s, cmdLineCurPos);
+ cmdLineCurPos += s;
+ *cmdLineCurPos++ = '\"';
}
- *(cmdLine + j) = '\0';
+ *cmdLineCurPos = '\0';
// Get the environment, if any.
char *env = NULL;