]> git.siccegge.de Git - frida/frida.git/blobdiff - src/bindings/Guile.cxx
properly terminate guile thread
[frida/frida.git] / src / bindings / Guile.cxx
index 18d12e95eef91b5edec0624b5797a68081678546..aa7ea526118c205f5278e632fef4d554d9e6b887 100644 (file)
@@ -15,7 +15,7 @@ GuileInterpreter::GuileInterpreter()
        scm_init_guile();
        scm_c_use_module("system repl server");
 
        scm_init_guile();
        scm_c_use_module("system repl server");
 
-       guile::Geiser* geiser = new guile::Geiser(this);
+       geiser = new guile::Geiser(this);
        geiser->start();
 
        scm_c_load_extension("libguile-frida-binding",
        geiser->start();
 
        scm_c_load_extension("libguile-frida-binding",
@@ -28,6 +28,11 @@ GuileInterpreter::GuileInterpreter()
        LOG4CXX_INFO(logger, "Initializing GUILE finished");
 }
 
        LOG4CXX_INFO(logger, "Initializing GUILE finished");
 }
 
+GuileInterpreter::~GuileInterpreter() {
+       geiser->terminate();
+       geiser->wait();
+}
+
 int GuileInterpreter::evaluateWithErrorHandling(SCM (*fun)(void *),
                                                 void* data,
                                                 std::ostream& stdout,
 int GuileInterpreter::evaluateWithErrorHandling(SCM (*fun)(void *),
                                                 void* data,
                                                 std::ostream& stdout,