该bug的具体表现是在YTHT NT用小d删除文章,当删除版面最新一篇文章时
无法删除,删除其他文章时能够删除,但是版面文章数不减少,而且版面
倒数第二片文章和最后一篇文章相同。多次删除该bug反复出现。
该bug在innbbsd跨站砍信时也存在,表现相同。
修改办法 by dinger@YTHT :
1.修改bbssrc/libythtbbs/record.c文件的286行以下部分为
============================
if (ret == 0) {
memcpy(ptr + (pos - 1) * size, ptr + pos * size,
st.st_size - size * pos);
#ifndef CYGWIN /* add by dinger for CYGWIN */
ftruncate(fd, st.st_size - size);
#endif /* add by dinger End */
}
}
MMAP_CATCH {
}
MMAP_END munmap(ptr, st.st_size);
#ifdef CYGWIN /* add by dinger for CYGWIN */
ftruncate(fd, st.st_size - size);
#endif /* add by dinger End */
/* to fix a bug that ftruncate() does not work properly under CYGWIN using with mmap */
flock(fd, LOCK_UN);
close(fd);
return ret;
}
==========================
2.修改bbssrc/innbbsd/receive_article.c的879行以下部分为
if (ret == 0) {
memcpy(ptr + pos * size, ptr + (pos + 1) * size,
state.st_size - size * (pos + 1));
#ifndef CYGWIN /* add by glutton for CYGWIN */
ftruncate(fd, state.st_size - size);
#endif /* add by glutton End */
}
}
MMAP_CATCH {
}
MMAP_END munmap(ptr, state.st_size);
#ifdef CYGWIN /* add by glutton */
ftruncate(fd, state.st_size - size);
#endif /* add by glutton End */
flock(fd, LOCK_UN);
close(fd);
sprintf(buf, "%s/boards/%s/%s", homepath, board, file);
unlink(buf);
updatelastpost(board);
return ret;
}
--
FROM 211.161.162.219