aboutsummaryrefslogtreecommitdiff
path: root/src/harness_adapter.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/harness_adapter.c')
-rw-r--r--src/harness_adapter.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/harness_adapter.c b/src/harness_adapter.c
index aa45ce6..8585d7e 100644
--- a/src/harness_adapter.c
+++ b/src/harness_adapter.c
@@ -5,7 +5,7 @@
#include "HsFFI.h"
#include "plugin_interface.h"
-#include <stdio.h>
+#include <unistd.h>
const char *plugin_name = "Wetterhorn";
@@ -16,11 +16,18 @@ void* get_foreign_interface()
return foreign_interface;
}
-void plugin_load(int argc, char **argv, void* fintf) {
+void plugin_load(int argc, char **argv, foreign_interface_t* fintf) {
hs_init(&argc, &argv);
foreign_interface = fintf;
}
-void plugin_teardown(opqst_t st) { hs_exit(); }
+void plugin_teardown(opqst_t st) {
+ hs_exit();
+
+ // There's a race condition between when this shared library is unloaded and
+ // when the haskell runtime actually exits. Don't have a good solution for
+ // this at the moment, so just sleep for a second.
+ sleep(1);
+}
static const char msg[] =
"Wetterhorn Plugin v 0.01\n\n"