diff options
Diffstat (limited to 'src/emacs-module.c')
| -rw-r--r-- | src/emacs-module.c | 14 |
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. */ |
