This is an automated email from the git hooks/post-receive script. sthibault pushed a commit to branch dde in repository hurd.
commit 226a9d9c34a2d187f978a25874488e5b07986d7c Author: Justus Winter <[email protected]> Date: Sun Jun 7 00:58:36 2015 +0200 libihash: prefer performance degradation over failure * libihash/ihash.c (hurd_ihash_add): Add the item even though we are above the load factor if resizing failed. --- libihash/ihash.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/libihash/ihash.c b/libihash/ihash.c index a97de3e..87d7abf 100644 --- a/libihash/ihash.c +++ b/libihash/ihash.c @@ -301,12 +301,14 @@ hurd_ihash_add (hurd_ihash_t ht, hurd_ihash_key_t key, hurd_ihash_value_t item) { struct hurd_ihash old_ht = *ht; int was_added; + int fatal = 0; /* bail out on allocation errors */ unsigned int i; if (ht->size) { /* Only fill the hash table up to its maximum load factor. */ if (hurd_ihash_get_load (ht) <= ht->max_load) + add_one: if (add_one (ht, key, item)) return 0; } @@ -324,7 +326,15 @@ hurd_ihash_add (hurd_ihash_t ht, hurd_ihash_key_t key, hurd_ihash_value_t item) if (ht->items == NULL) { *ht = old_ht; - return ENOMEM; + if (fatal || ht->size == 0) + return ENOMEM; + + /* We prefer performance degradation over failure. Therefore, + we add the item even though we are above the load factor. If + the table is full, this will fail. We set the fatal flag to + avoid looping. */ + fatal = 1; + goto add_one; } /* We have to rehash the old entries. */ -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hurd/hurd.git
