[NTVDM]: Correctly compute the command-line length to be communicated to COMMAND...
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sat, 31 Oct 2015 22:59:08 +0000 (22:59 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sat, 31 Oct 2015 22:59:08 +0000 (22:59 +0000)
svn path=/trunk/; revision=69767

reactos/subsystems/mvdm/ntvdm/dos/dem.c

index 0ed51c2..0848d45 100644 (file)
@@ -378,20 +378,18 @@ Command:
 
 #endif
 
+    /* Compute the command line length, not counting the terminating "\r\n" */
     CmdLen = strlen(CmdLine);
-    DPRINT1("Starting '%s' ('%.*s')...\n",
-            AppName,
-            /* Display the command line without the terminating 0d 0a (and skip the terminating NULL) */
-            CmdLen >= 2 ? (CmdLine[CmdLen - 2] == '\r' ? CmdLen - 2
-                                                       : CmdLen)
-                        : CmdLen,
-            CmdLine);
+    if (CmdLen >= 2 && CmdLine[CmdLen - 2] == '\r')
+        CmdLen -= 2;
+
+    DPRINT1("Starting '%s' ('%.*s')...\n", AppName, CmdLen, CmdLine);
 
     /* Start the process */
     // FIXME: Merge 'Env' with the master environment SEG_OFF_TO_PTR(SYSTEM_ENV_BLOCK, 0)
     // FIXME: Environment
     RtlCopyMemory(SEG_OFF_TO_PTR(DataStruct->AppNameSeg, DataStruct->AppNameOff), AppName, MAX_PATH);
-    *(PBYTE)(SEG_OFF_TO_PTR(DataStruct->CmdLineSeg, DataStruct->CmdLineOff)) = (BYTE)(strlen(CmdLine) - 2);
+    *(PBYTE)(SEG_OFF_TO_PTR(DataStruct->CmdLineSeg, DataStruct->CmdLineOff)) = (BYTE)CmdLen;
     RtlCopyMemory(SEG_OFF_TO_PTR(DataStruct->CmdLineSeg, DataStruct->CmdLineOff + 1), CmdLine, DOS_CMDLINE_LENGTH);
 
 #ifndef STANDALONE