Fix `getn` in ctree
authorJeroen van der Heijden <jeroen@transceptor.technology>
Wed, 22 May 2019 10:00:52 +0000 (12:00 +0200)
committerJeroen van der Heijden <jeroen@transceptor.technology>
Wed, 22 May 2019 10:00:52 +0000 (12:00 +0200)
src/ctree/ctree.c

index e6fefe3c3162bcf03b5e01b26773f8d3b7187698..0cf8ec5ff39727fcbd8fe5f07aa85d699f87bfdd 100644 (file)
@@ -183,10 +183,17 @@ void * ct_getn(ct_t * ct, const char * key, size_t n)
 {
     size_t diff = 1;
     ct_node_t * nd;
-    uint8_t k = (uint8_t) *key;
-    uint8_t pos = k / BLOCKSZ;
+    uint8_t k, pos;
+
+    if (!n)
+    {
+        return NULL;
+    }
+
+    k = (uint8_t) *key;
+    pos = k / BLOCKSZ;
 
-    if (!n || pos < ct->offset || pos >= ct->offset + ct->n)
+    if (pos < ct->offset || pos >= ct->offset + ct->n)
     {
         return NULL;
     }