diff options
| author | Karl Heuer | 1994-06-03 04:50:17 +0000 |
|---|---|---|
| committer | Karl Heuer | 1994-06-03 04:50:17 +0000 |
| commit | 647c32eb3e9ee80bae70661113f51e030c58626c (patch) | |
| tree | 518656b8055b32217e8b7dd9355d47e090ea8969 /src | |
| parent | 6873cfa3939381670ee08dd890131bbe593db3c4 (diff) | |
| download | emacs-647c32eb3e9ee80bae70661113f51e030c58626c.tar.gz emacs-647c32eb3e9ee80bae70661113f51e030c58626c.zip | |
(run_msdos_command): Make local copy of argv[2] on stack, not on heap.
(run_msdos_command): When changing argv[2] from using slashes to
using backslashes, only do so on the first white-space delimited part.
Diffstat (limited to 'src')
| -rw-r--r-- | src/msdos.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/msdos.c b/src/msdos.c index 154ee1501c5..fd9ae23efee 100644 --- a/src/msdos.c +++ b/src/msdos.c | |||
| @@ -527,11 +527,20 @@ run_msdos_command (argv, dir, tempin, tempout) | |||
| 527 | if (msshell) | 527 | if (msshell) |
| 528 | { | 528 | { |
| 529 | saveargv1 = argv[1]; | 529 | saveargv1 = argv[1]; |
| 530 | saveargv2 = argv[2]; | ||
| 530 | argv[1] = "/c"; | 531 | argv[1] = "/c"; |
| 531 | if (argv[2]) | 532 | if (argv[2]) |
| 532 | { | 533 | { |
| 533 | saveargv2 = argv[2]; | 534 | char *p = alloca (strlen (argv[2]) + 1); |
| 534 | unixtodos_filename (argv[2] = strdup (argv[2])); | 535 | |
| 536 | strcpy (argv[2] = p, saveargv2); | ||
| 537 | while (*p && isspace (*p)) | ||
| 538 | p++; | ||
| 539 | while (*p && !isspace (*p)) | ||
| 540 | if (*p == '/') | ||
| 541 | *p++ = '\\'; | ||
| 542 | else | ||
| 543 | p++; | ||
| 535 | } | 544 | } |
| 536 | } | 545 | } |
| 537 | 546 | ||
| @@ -578,11 +587,7 @@ run_msdos_command (argv, dir, tempin, tempout) | |||
| 578 | if (msshell) | 587 | if (msshell) |
| 579 | { | 588 | { |
| 580 | argv[1] = saveargv1; | 589 | argv[1] = saveargv1; |
| 581 | if (argv[2]) | 590 | argv[2] = saveargv2; |
| 582 | { | ||
| 583 | free (argv[2]); | ||
| 584 | argv[2] = saveargv2; | ||
| 585 | } | ||
| 586 | } | 591 | } |
| 587 | return result; | 592 | return result; |
| 588 | } | 593 | } |