From 66ab51817f607f68652470f16580068762d2d3bb Mon Sep 17 00:00:00 2001 From: Olivier Dion <olivier.dion@savoirfairelinux.com> Date: Thu, 9 Dec 2021 10:48:59 -0500 Subject: [PATCH] agent/bindings/signal: Protect from GC callbacks Change-Id: If91bed7badd8229aee216a91445b758e8901e573 --- test/agent/src/bindings/signal.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/agent/src/bindings/signal.cpp b/test/agent/src/bindings/signal.cpp index 85e044a87a..eb5db8d557 100644 --- a/test/agent/src/bindings/signal.cpp +++ b/test/agent/src/bindings/signal.cpp @@ -83,6 +83,8 @@ public: SCM ret = apply_to_guile(cb, args...); if (scm_is_true(ret)) { to_keep.emplace_back(cb); + } else { + scm_gc_unprotect_object(cb); } } @@ -138,6 +140,7 @@ on_signal_binding(SCM signal_sym, SCM handler_proc) mutex = static_cast<std::mutex*>(scm_to_pointer(scm_cdr(handler_pair))); std::unique_lock lck(*mutex); + scm_gc_protect_object(handler_proc); callbacks->push_back(handler_proc); return SCM_UNDEFINED; -- GitLab