]> git.eshelyaron.com Git - emacs.git/commitdiff
hash_remove_from_table returns bool
authorGerd Möllmann <gerd@gnu.org>
Wed, 19 Oct 2022 14:39:05 +0000 (16:39 +0200)
committerGerd Möllmann <gerd@gnu.org>
Wed, 19 Oct 2022 14:47:31 +0000 (16:47 +0200)
* src/fns.c (hash_remove_from_table): Return true if something was
deleted.
* src/lisp.h: Change declaration.

src/fns.c
src/lisp.h

index b7cc976e786dc6d693c0b7bcb26c1a347543e3cb..ff9993c8fd2c0d14c2a50678657f487cb8e32e73 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -4705,12 +4705,13 @@ hash_put (struct Lisp_Hash_Table *h, Lisp_Object key, Lisp_Object value,
 
 /* Remove the entry matching KEY from hash table H, if there is one.  */
 
-void
+bool
 hash_remove_from_table (struct Lisp_Hash_Table *h, Lisp_Object key)
 {
   Lisp_Object hash_code = h->test.hashfn (key, h);
   ptrdiff_t start_of_bucket = XUFIXNUM (hash_code) % ASIZE (h->index);
   ptrdiff_t prev = -1;
+  bool deleted = false;
 
   for (ptrdiff_t i = HASH_INDEX (h, start_of_bucket);
        0 <= i;
@@ -4736,11 +4737,14 @@ hash_remove_from_table (struct Lisp_Hash_Table *h, Lisp_Object key)
          h->next_free = i;
          h->count--;
          eassert (h->count >= 0);
+         deleted = true;
          break;
        }
 
       prev = i;
     }
+
+  return deleted;
 }
 
 
index e911e68e760495ff233841f21aebe057b08ae7a0..c35c600a539b59841e220e08f3ec941c74ce6613 100644 (file)
@@ -4123,7 +4123,7 @@ Lisp_Object make_hash_table (struct hash_table_test, EMACS_INT, float, float,
 ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object *);
 ptrdiff_t hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object,
                    Lisp_Object);
-void hash_remove_from_table (struct Lisp_Hash_Table *, Lisp_Object);
+bool hash_remove_from_table (struct Lisp_Hash_Table *, Lisp_Object);
 extern struct hash_table_test const hashtest_eq, hashtest_eql, hashtest_equal;
 extern void validate_subarray (Lisp_Object, Lisp_Object, Lisp_Object,
                               ptrdiff_t, ptrdiff_t *, ptrdiff_t *);