From: Paul Eggert Date: Fri, 20 Nov 2015 21:48:54 +0000 (-0800) Subject: Fix double-decrement bug when freeing global refs X-Git-Tag: emacs-25.0.90~710 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=033811ceec6a2b1cb12c14cb932c0bf583e79020;p=emacs.git Fix double-decrement bug when freeing global refs * src/emacs-module.c (module_free_global_ref): Add a FIXME comment about error reporting. Fix a recently-introduced typo that double-decremented the refcount. --- diff --git a/src/emacs-module.c b/src/emacs-module.c index 84072b9917e..e730ca35ae5 100644 --- a/src/emacs-module.c +++ b/src/emacs-module.c @@ -293,6 +293,8 @@ module_free_global_ref (emacs_env *env, emacs_value ref) check_main_thread (); eassert (module_non_local_exit_check (env) == emacs_funcall_exit_return); /* TODO: This probably never signals. */ + /* FIXME: Wait a minute. Shouldn't this function report an error if + the hash lookup fails? */ MODULE_HANDLE_SIGNALS_VOID; eassert (HASH_TABLE_P (Vmodule_refs_hash)); struct Lisp_Hash_Table *h = XHASH_TABLE (Vmodule_refs_hash); @@ -307,7 +309,7 @@ module_free_global_ref (emacs_env *env, emacs_value ref) EMACS_INT refcount = XFASTINT (value) - 1; if (refcount > 0) { - value = make_natnum (refcount - 1); + value = make_natnum (refcount); set_hash_value_slot (h, i, value); } else