diff --git a/src/signal_handler.c b/src/signal_handler.c index 10e23040d18e5539440f1e7fa55c27a66d52c421..1892625acf7732b3b712a1c5d06214c1f9125dd1 100644 --- a/src/signal_handler.c +++ b/src/signal_handler.c @@ -846,6 +846,7 @@ void f_create_process(INT32 args) int gid_request=0; int do_initgroups=1; struct passwd *pw=0; + ONERROR oe; char **argv; #ifdef DECLARE_ENVIRON @@ -855,6 +856,8 @@ void f_create_process(INT32 args) extern void my_set_close_on_exec(int,int); extern void do_set_close_on_exec(void); + SET_ONERROR(oe, exit_on_error, "Error in create_process() child."); + #ifdef _REENTRANT /* forked copy. there is now only one thread running, this one. */ num_threads=1; @@ -1226,6 +1229,7 @@ static void f_kill(INT32 args) #else #ifdef __NT__ +#define HAVE_KILL void f_kill(INT32 args) { HANDLE proc=INVALID_HANDLE_VALUE; @@ -1279,7 +1283,10 @@ void f_kill(INT32 args) } default: - error("Unknown signal %d\n",sp[1-args].u.integer); + errno=EINVAL; + pop_n_elems(args); + push_int(-1); + break; } } #endif