同志们,这个 fix 已经被提交进 svn,跟进请注意重启站点
【 在 atppp (Big Mouse) 的大作中提到: 】
: 标 题: Re: 报告ucache.c的一个bug
: 发信站: 水木社区 (Fri Nov 4 17:57:47 2005), 转信
:
: 这个是去年11月我写过的一段:貌似和你的一样也!
:
: 上面的第二句话应该改成:
:
: n1 = (n1 - 1 + n2 % UCACHE_HASHBSIZE) % UCACHE_HASHSIZE + 1;
:
: 这个bug导致的问题是使用smthbbs的站上有大概1/374的id是不可以通过id补全看到的
:
: 【 在 dvlt (-: :-) 的大作中提到: 】
: : 那么这里就出现了一个情况:相同前缀的字符串不一定在一个bucket里,因为
: : 上面两处加了两次1。对于例中archmagi的情况,后面五个字符的hash值正好
: : 是373,于是 H(archmagi)==H(arc)+374, 因此它们不在同一个bucket
: : 中了。这就导致了u_namecomplete没法在arc的bucket里找到archmagi。
: : 我想了一个解决方法是,把
: : n1 = (n1 + n2 % UCACHE_HASHBSIZE) % UCACHE_HASHSIZE + 1;
: : 改成
: : n1 = ((n1 - 1) + n2 % UCACHE_HASHBSIZE) % UCACHE_HASHSIZE + 1;
: : 这样就避免了加两次1的毛病。
: : 这个解决方法能够解决archmagi的问题。但是其副作用我尚不清楚。还待前辈指教。
:
:
: --
: 水木社区凉粉证 0242 号
: ┏^ǒ^*★*^ǒ^*☆*^ǒ^*★*^ǒ^*☆*^ǒ^ ┓
: ┃╭の╮┏┯┓┏┯┓ ┏┯┓┏┯┓ ╬ ┃
: ┃ ╲╱ ┠最┨┠爱┨ ┠靓┨┠颖┨╭║╮┃
: ┃┗恋┛┗┷┛┗┷┛ ┗┷┛┗┷┛ ╲╱ ┃
: ┗^ǒ^*★*^ǒ^*☆*^ǒ^*★*^ǒ^*☆*^ǒ^ ┛
:
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 61.182.213.*]
--
FROM 221.218.129.*