summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2015-03-24 14:06:07 -0400
committerAdrian Thurston <thurston@complang.org>2015-03-24 14:06:07 -0400
commit195b62d89fa85440a7589bf3719138d1cd9a2da5 (patch)
treedfb2ea8817d6e8f77168d6dc0a1870a6fc1fd04a
parentdc5b1816d5546d69845c4da7f62d19ba63c8c969 (diff)
downloadcolm-195b62d89fa85440a7589bf3719138d1cd9a2da5.tar.gz
handle signals in the system call and return the correct exit status
-rw-r--r--src/bytecode.c10
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;
}