在FB3.0中存在此bug
在edit.c 的write_file函数其中这几行:
if (abort[0] == 'l' || abort[0] == 'L' || local_article == 1) {
sprintf(genbuf, "local_article = %u", local_article);
report(genbuf);
local_article = 0;
if (aborted != -1)
aborted = 1;
}
以前一直都没问题,但是当我改成可以本站发表文章时,这个bug就出现了,
表现为本地修改文章时不会出现修改过的痕迹.
debug时发现在bbs.c中的add_edit_mark有问题
int
add_edit_mark(fname, mode, title)
char *fname;
int mode;
char *title;
{
FILE *fp, *out;
char buf[256];
time_t now;
char outname[STRLEN];
int step = 0, signature = 0;
int newtitle = 0; /* add by jjk Apr 12, 2002 */
if ((fp = fopen(fname, "r")) == NULL) //程序在这里就停了
return 0;
-------------------------------------------------------
发现fname里面的内容变成了"local_article = 1"
因为使用genbuf的地方实在太多,一个个查太麻烦了. 把genbuf这个全局变量改成局部就
行了。这个地方似乎没什么必要用genbuf,应该还有跟这个相似的bug, 懒得去查了.呵呵
-------------------------------------------------------
另外,bbs.c 的 edit_post 函数里面有这句话:
在这里的genbuf不知道什么时候给改掉了.
if (vedit(genbuf, NA) != -1) {
if (ADD_EDITMARK)
add_edit_mark(genbuf, 1, NULL);
}
--------------------------------------------------------
所以没什么必要最好不要用全局变量. 都是全局变量惹的祸 -_-!
--
FROM 192.168.0.234