summaryrefslogtreecommitdiff
path: root/src/emacs-module.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2015-11-20 13:48:54 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2015-11-20 13:49:16 -0800
commit033811ceec6a2b1cb12c14cb932c0bf583e79020 (patch)
treeb96b8aa8ccf5a98b5360f2b5b0dd1178dbd6a461 /src/emacs-module.c
parentd0e07e0e2239771fd21b9525ea421cf7ba1cc97c (diff)
downloademacs-033811ceec6a2b1cb12c14cb932c0bf583e79020.tar.gz
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.
Diffstat (limited to 'src/emacs-module.c')
-rw-r--r--src/emacs-module.c4
1 files changed, 3 insertions, 1 deletions
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