diff options
Diffstat (limited to 'src/harness_adapter.c')
-rw-r--r-- | src/harness_adapter.c | 13 |
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" |