программистское, вкратце
Jun. 8th, 2004 10:58 pmСмешной баг. Примитивная хэш-функция берёт строку и в цикле умножает текущее значение хэша на 33 и прибавляет числовое значение следующего символа в строке. В конце берёт остаток от деления на кол-во слотов в таблице. Всё хорошо, но когда строка оказалась достаточно длинной, значение хэша вышло за пределы 2^32 и не вернулось к нулю, а было переведено слишком умным Perl'ом в тип с плавающей точкой. Который при попытке поделить его с остатком исправно давал 0.
no subject
Date: 2004-06-08 01:36 pm (UTC)no subject
Date: 2004-06-08 01:55 pm (UTC)А может, это 64 бита переполнились, я не уверен, на самом деле - не подсчитывал специально.
Есть, начиная с 5.6
Date: 2004-06-08 02:54 pm (UTC)no subject
Date: 2004-06-08 02:54 pm (UTC)no subject
Date: 2004-06-09 02:33 pm (UTC)