]> granicus.if.org Git - yasm/commitdiff
* hamt.c (HAMT_delete_trie): Close memory leak (max'ing of size would make
authorPeter Johnson <peter@tortall.net>
Sun, 5 Mar 2006 22:40:44 +0000 (22:40 -0000)
committerPeter Johnson <peter@tortall.net>
Sun, 5 Mar 2006 22:40:44 +0000 (22:40 -0000)
size=0 instead of 32 when the actual size was 32).

svn path=/trunk/yasm/; revision=1407

libyasm/hamt.c

index f93c51b0e8601666e509cfa9b59e1e47c08143fb..aef6b52202ee4394460be9297860b89892a84ca2 100644 (file)
@@ -114,7 +114,8 @@ HAMT_delete_trie(HAMTNode *node)
 
        /* Count total number of bits in bitmap to determine size */
        BitCount(Size, node->BitMapKey);
-       Size &= 0x1F;   /* Clamp to <32 */
+       if (Size > 32)
+           Size = 32;
 
        for (i=0; i<Size; i++)
            HAMT_delete_trie(&(GetSubTrie(node))[i]);
@@ -274,8 +275,7 @@ HAMT_insert(HAMT *hamt, const char *str, void *data, int *replace,
 
            /* Count total number of bits in bitmap to determine new size */
            BitCount(Size, node->BitMapKey);
-           Size &= 0x1F;       /* Clamp to <=32 */
-           if (Size == 0)
+           if (Size > 32)
                Size = 32;
            newnodes = yasm_xmalloc(Size*sizeof(HAMTNode));