环顾四方 上万的用户存在昵称乱码bug
-----> 产生原因:
src/list.c
do_userlist 函数里面
329 行:
move(y, 20);
然后打印昵称
339行:
sprintf(user_info_str,
" %4d%2s%s%-12.12s%s%s ",
人数达到10000后
%4d 的限定被超越
于是 user_info_str 多了一个空格覆盖了 昵称的第一个字母
造成乱码
----> 简单解决 (粗暴的改.#* 为.#* 没考虑9#的□)
不过别的地方也不会遇到这个问题 加一个判断会好些 要不好多人会不干的 呵呵
--- list.c.orig Mon Dec 29 03:38:22 2003
+++ list.c Sat Mar 20 23:14:42 2004
@@ -242,7 +242,7 @@
int padding_count;
#define FROMSTR uentp.from
#else
- #define FRIENDSIG "."
+ #define FRIENDSIG "."
#define FROMSTR "*"
#endif
@@ -337,8 +337,8 @@
resetcolor();
move(y, x);
sprintf(user_info_str,
- " %4d%2s%s%-12.12s%s%s ",
- i + 1 + page, (override) ? (uentp.invisible ? "#" : FRIENDSIG) : (uentp.invisible ? "*" : ""),
+ " %5d%1s%s%-12.12s%s%s ",
+ i + 1 + page, (override) ? (uentp.invisible ? "#" : FRIENDSIG) : (uentp.invisible ? "*" : ""),
(override) ? "\033[1;32m" : "", uentp.userid, (override) ? "\033[m" : "",
(override && showexplain) ? "\033[1;31m" : "");
prints("%s", user_info_str);
--
FROM 166.111.154.35