summaryrefslogtreecommitdiff
path: root/src/emacs-module.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emacs-module.c')
-rw-r--r--src/emacs-module.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/emacs-module.c b/src/emacs-module.c
index bebfe594426..1a8c1768230 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -871,6 +871,7 @@ static void
initialize_environment (emacs_env *env, struct emacs_env_private *priv)
{
priv->pending_non_local_exit = emacs_funcall_exit_return;
+ priv->non_local_exit_symbol = priv->non_local_exit_data = Qnil;
env->size = sizeof *env;
env->private_members = priv;
env->make_global_ref = module_make_global_ref;
@@ -926,6 +927,19 @@ finalize_runtime_unwind (void* raw_ert)
finalize_environment (&ert->private_members->pub);
}
+void
+mark_modules (void)
+{
+ Lisp_Object tail = Vmodule_environments;
+ FOR_EACH_TAIL_SAFE (tail)
+ {
+ emacs_env *env = XSAVE_POINTER (XCAR (tail), 0);
+ struct emacs_env_private *priv = env->private_members;
+ mark_object (priv->non_local_exit_symbol);
+ mark_object (priv->non_local_exit_data);
+ }
+}
+
/* Non-local exit handling. */