on master help sign in
Ignore SIGPIPE on the unicies.
b046ab1Robert Clipsham
rts/idris_main.c+1
@@ -21,6 +21,7 @@ int main(int argc, char* argv[]) {
21 init_gmpalloc();
21 init_gmpalloc();
22
22
23 init_nullaries();
23 init_nullaries();
24+ init_signals();
24
25
25 _idris__123_runMain0_125_(vm, NULL);
26 _idris__123_runMain0_125_(vm, NULL);
26
27
rts/idris_rts.c+7
@@ -72,6 +72,7 @@ VM* idris_vm() {
72 init_threaddata(vm);
72 init_threaddata(vm);
73 init_gmpalloc();
73 init_gmpalloc();
74 init_nullaries();
74 init_nullaries();
75+ init_signals();
75
76
76 return vm;
77 return vm;
77}
78}
@@ -92,6 +93,12 @@ void init_threaddata(VM *vm) {
92#endif
93#endif
93}
94}
94
95
96+void init_signals() {
97+#if (__linux__ || __APPLE__ || __FreeBSD__)
98+ signal(SIGPIPE, SIG_IGN);
99+#endif
100+}
101+
95Stats terminate(VM* vm) {
102Stats terminate(VM* vm) {
96 Stats stats = vm->stats;
103 Stats stats = vm->stats;
97 STATS_ENTER_EXIT(stats)
104 STATS_ENTER_EXIT(stats)
rts/idris_rts.h+5
@@ -9,6 +9,9 @@
9#include <pthread.h>
9#include <pthread.h>
10#endif
10#endif
11#include <stdint.h>
11#include <stdint.h>
12+#if (__linux__ || __APPLE__ || __FreeBSD__)
13+#include <signal.h>
14+#endif
12
15
13#include "idris_heap.h"
16#include "idris_heap.h"
14#include "idris_stats.h"
17#include "idris_stats.h"
@@ -256,6 +259,8 @@ extern VAL* nullary_cons;
256void init_nullaries();
259void init_nullaries();
257void free_nullaries();
260void free_nullaries();
258
261
262+void init_signals();
263+
259void* vmThread(VM* callvm, func f, VAL arg);
264void* vmThread(VM* callvm, func f, VAL arg);
260
265
261// Copy a structure to another vm's heap
266// Copy a structure to another vm's heap