Commit d767418b authored by Philipp Stephani's avatar Philipp Stephani

Backport: Make checking for liveness of global values more precise.

We can't just use a hash lookup because a global and a local reference
might refer to the same Lisp object.

* src/emacs-module.c (module_free_global_ref): More precise check for
global liveness.

(cherry picked from commit 9f01ce63)
parent 8c94ca94
Pipeline #6183 passed with stage
in 69 minutes and 28 seconds
......@@ -448,6 +448,14 @@ module_free_global_ref (emacs_env *env, emacs_value ref)
Lisp_Object obj = value_to_lisp (ref);
ptrdiff_t i = hash_lookup (h, obj, NULL);
if (module_assertions)
{
ptrdiff_t n = 0;
if (! module_global_reference_p (ref, &n))
module_abort ("Global value was not found in list of %"pD"d globals",
n);
}
if (i >= 0)
{
Lisp_Object value = HASH_VALUE (h, i);
......@@ -456,11 +464,6 @@ module_free_global_ref (emacs_env *env, emacs_value ref)
if (--ref->refcount == 0)
hash_remove_from_table (h, obj);
}
else if (module_assertions)
{
module_abort ("Global value was not found in list of %"pD"d globals",
h->count);
}
}
static enum emacs_funcall_exit
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment