]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix double-decrement bug when freeing global refs
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 20 Nov 2015 21:48:54 +0000 (13:48 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 20 Nov 2015 21:49:16 +0000 (13:49 -0800)
* 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.

src/emacs-module.c

index 84072b9917ebd0568be48555b88f73d36dfcf9fb..e730ca35ae520effee5b0dd3eb664a39c55e06b6 100644 (file)
@@ -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