diff options
Diffstat (limited to 'src/sysdep.c')
| -rw-r--r-- | src/sysdep.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/sysdep.c b/src/sysdep.c index 6ef3d88c5c8..1bb400421f0 100644 --- a/src/sysdep.c +++ b/src/sysdep.c | |||
| @@ -449,7 +449,7 @@ child_setup_tty (int out) | |||
| 449 | struct save_signal | 449 | struct save_signal |
| 450 | { | 450 | { |
| 451 | int code; | 451 | int code; |
| 452 | SIGTYPE (*handler) (int); | 452 | void (*handler) (int); |
| 453 | }; | 453 | }; |
| 454 | 454 | ||
| 455 | static void save_signal_handlers (struct save_signal *); | 455 | static void save_signal_handlers (struct save_signal *); |
| @@ -488,7 +488,8 @@ sys_subshell (void) | |||
| 488 | int pid; | 488 | int pid; |
| 489 | struct save_signal saved_handlers[5]; | 489 | struct save_signal saved_handlers[5]; |
| 490 | Lisp_Object dir; | 490 | Lisp_Object dir; |
| 491 | unsigned char * IF_LINT (volatile) str = 0; | 491 | unsigned char *volatile str_volatile = 0; |
| 492 | unsigned char *str; | ||
| 492 | int len; | 493 | int len; |
| 493 | 494 | ||
| 494 | saved_handlers[0].code = SIGINT; | 495 | saved_handlers[0].code = SIGINT; |
| @@ -512,7 +513,7 @@ sys_subshell (void) | |||
| 512 | goto xyzzy; | 513 | goto xyzzy; |
| 513 | 514 | ||
| 514 | dir = expand_and_dir_to_file (Funhandled_file_name_directory (dir), Qnil); | 515 | dir = expand_and_dir_to_file (Funhandled_file_name_directory (dir), Qnil); |
| 515 | str = (unsigned char *) alloca (SCHARS (dir) + 2); | 516 | str_volatile = str = (unsigned char *) alloca (SCHARS (dir) + 2); |
| 516 | len = SCHARS (dir); | 517 | len = SCHARS (dir); |
| 517 | memcpy (str, SDATA (dir), len); | 518 | memcpy (str, SDATA (dir), len); |
| 518 | if (str[len - 1] != '/') str[len++] = '/'; | 519 | if (str[len - 1] != '/') str[len++] = '/'; |
| @@ -544,6 +545,7 @@ sys_subshell (void) | |||
| 544 | sh = "sh"; | 545 | sh = "sh"; |
| 545 | 546 | ||
| 546 | /* Use our buffer's default directory for the subshell. */ | 547 | /* Use our buffer's default directory for the subshell. */ |
| 548 | str = str_volatile; | ||
| 547 | if (str && chdir ((char *) str) != 0) | 549 | if (str && chdir ((char *) str) != 0) |
| 548 | { | 550 | { |
| 549 | #ifndef DOS_NT | 551 | #ifndef DOS_NT |
| @@ -606,7 +608,7 @@ save_signal_handlers (struct save_signal *saved_handlers) | |||
| 606 | while (saved_handlers->code) | 608 | while (saved_handlers->code) |
| 607 | { | 609 | { |
| 608 | saved_handlers->handler | 610 | saved_handlers->handler |
| 609 | = (SIGTYPE (*) (int)) signal (saved_handlers->code, SIG_IGN); | 611 | = (void (*) (int)) signal (saved_handlers->code, SIG_IGN); |
| 610 | saved_handlers++; | 612 | saved_handlers++; |
| 611 | } | 613 | } |
| 612 | } | 614 | } |