]> granicus.if.org Git - yasm/commitdiff
* hamt.c: Fix bug introduced in [1407] that causes crashes on >32 bit systems.
authorPeter Johnson <peter@tortall.net>
Mon, 6 Mar 2006 00:59:26 +0000 (00:59 -0000)
committerPeter Johnson <peter@tortall.net>
Mon, 6 Mar 2006 00:59:26 +0000 (00:59 -0000)
svn path=/trunk/yasm/; revision=1409

libyasm/hamt.c

index aef6b52202ee4394460be9297860b89892a84ca2..318c086fac3efdaee8a704f4ac62b9a61c335f24 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);
-       if (Size > 32)
+       Size &= 0x1F;
+       if (Size == 0)
            Size = 32;
 
        for (i=0; i<Size; i++)
@@ -275,7 +276,8 @@ 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);
-           if (Size > 32)
+           Size &= 0x1F;
+           if (Size == 0)
                Size = 32;
            newnodes = yasm_xmalloc(Size*sizeof(HAMTNode));