• Roman Kapl's avatar
    hashtable: fix environment variable corruption · 9dfdbd9f
    Roman Kapl authored
    Only first previously deleted entry was recognized, leading hsearch_r
    to think that there was no previously deleted entry. It then conluded
    that a free entry was found, even if there were no free entries and it
    overwrote a random entry.
    
    This patch makes sure all deleted or free entries are always found and
    also introduces constants for the 0 and -1 numbers. Unit tests to excersise a
    simple hash table usage and catch the corruption were added.
    
    To trash your environment, simply run this loop:
    
    setenv i 0
    while true; do
        setenv v_$i $i
        setenv v_$i
        setexpr i $i + 1
    done
    Signed-off-by: default avatarRoman Kapl <rka@sysgo.com>
    9dfdbd9f