diff options
author | Adrian Thurston <thurston@complang.org> | 2015-03-24 14:06:07 -0400 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2015-03-24 14:06:07 -0400 |
commit | 195b62d89fa85440a7589bf3719138d1cd9a2da5 (patch) | |
tree | dfb2ea8817d6e8f77168d6dc0a1870a6fc1fd04a | |
parent | dc5b1816d5546d69845c4da7f62d19ba63c8c969 (diff) | |
download | colm-195b62d89fa85440a7589bf3719138d1cd9a2da5.tar.gz |
handle signals in the system call and return the correct exit status
-rw-r--r-- | src/bytecode.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index c7f474d2..a9a5b00b 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -3386,12 +3386,16 @@ again: memcpy( cmd0, cmd->value->data, cmd->value->length ); cmd0[cmd->value->length] = 0; - int r = system( cmd0 ); + int res = system( cmd0 ); + + if ( WIFSIGNALED( res ) ) + raise( WTERMSIG( res ) ); + res = WEXITSTATUS( res ); treeDownref( prg, sp, (Tree*)cmd ); - Value result = r; - vm_push_value( result ); + Value val = res; + vm_push_value( val ); break; } |