aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authorMohan Embar <gnustuff@thisiscool.com>2003-03-01 23:02:18 +0000
committerTom Tromey <tromey@gcc.gnu.org>2003-03-01 23:02:18 +0000
commit73058ef68c40c5c9f129d79e3eccc19543412d55 (patch)
treee3fa0eb5bcc69f0243ad11f82c51c326a1b67581 /libjava/java
parentf857509881fd80094c00dabbf94f64dd4d64c53b (diff)
downloadgcc-73058ef68c40c5c9f129d79e3eccc19543412d55.zip
gcc-73058ef68c40c5c9f129d79e3eccc19543412d55.tar.gz
gcc-73058ef68c40c5c9f129d79e3eccc19543412d55.tar.bz2
natWin32Process.cc (startProcess): Double-quote each program array element passed to CreateProcess.
2003-03-01 Mohan Embar <gnustuff@thisiscool.com> * java/lang/natWin32Process.cc (startProcess): Double-quote each program array element passed to CreateProcess. From-SVN: r63633
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/lang/natWin32Process.cc17
1 files changed, 9 insertions, 8 deletions
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;