chiark / gitweb /
hashmap: hashmap_move_one() should return -ENOENT when 'other' is NULL
authorMichal Schmidt <mschmidt@redhat.com>
Mon, 13 Oct 2014 16:14:07 +0000 (18:14 +0200)
committerMichal Schmidt <mschmidt@redhat.com>
Thu, 23 Oct 2014 15:38:02 +0000 (17:38 +0200)
-ENOENT is the same return value as if 'other' were an allocated hashmap
that does not contain the key. A NULL hashmap is a possible way of
expressing a hashmap that contains no key.

src/shared/hashmap.c

index 4c517059f68cbc1b3c7b41aaeae4192c3e4f359a..c4fde898f88ff3072dcfb7e090da375f249e886b 100644 (file)
@@ -886,15 +886,15 @@ int hashmap_move_one(Hashmap *h, Hashmap *other, const void *key) {
         unsigned h_hash, other_hash;
         struct hashmap_entry *e;
 
         unsigned h_hash, other_hash;
         struct hashmap_entry *e;
 
-        if (!other)
-                return 0;
-
         assert(h);
 
         h_hash = bucket_hash(h, key);
         if (hash_scan(h, h_hash, key))
                 return -EEXIST;
 
         assert(h);
 
         h_hash = bucket_hash(h, key);
         if (hash_scan(h, h_hash, key))
                 return -EEXIST;
 
+        if (!other)
+                return -ENOENT;
+
         other_hash = bucket_hash(other, key);
         e = hash_scan(other, other_hash, key);
         if (!e)
         other_hash = bucket_hash(other, key);
         e = hash_scan(other, other_hash, key);
         if (!e)