diff options
author | victor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2005-08-29 11:22:46 +0800 |
---|---|---|
committer | victor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2005-08-29 11:22:46 +0800 |
commit | 5544af605f9b9c5f1f36ea0e5c42fef1c88af97f (patch) | |
tree | d5585115252103dbf469cc8c9adee775323ff0ed /mbbsd | |
parent | cd3513b90098e739976c40819e24f14de3b7e33f (diff) | |
download | pttbbs-5544af605f9b9c5f1f36ea0e5c42fef1c88af97f.tar pttbbs-5544af605f9b9c5f1f36ea0e5c42fef1c88af97f.tar.gz pttbbs-5544af605f9b9c5f1f36ea0e5c42fef1c88af97f.tar.bz2 pttbbs-5544af605f9b9c5f1f36ea0e5c42fef1c88af97f.tar.lz pttbbs-5544af605f9b9c5f1f36ea0e5c42fef1c88af97f.tar.xz pttbbs-5544af605f9b9c5f1f36ea0e5c42fef1c88af97f.tar.zst pttbbs-5544af605f9b9c5f1f36ea0e5c42fef1c88af97f.zip |
revert r3108, fix the problem by bound correction as moving fav instead.
(the problem still exists potentially.)
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3111 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd')
-rw-r--r-- | mbbsd/board.c | 8 | ||||
-rw-r--r-- | mbbsd/fav.c | 35 |
2 files changed, 19 insertions, 24 deletions
diff --git a/mbbsd/board.c b/mbbsd/board.c index d75a3a78..f9331bc2 100644 --- a/mbbsd/board.c +++ b/mbbsd/board.c @@ -675,6 +675,8 @@ choose_board(int newflag) char keyword[13] = "", buf[64]; setutmpmode(newflag ? READNEW : READBRD); + if( get_current_fav() == NULL ) + fav_load(); ++choose_board_depth; brdnum = 0; if (!cuser.userlevel) /* guest yank all boards */ @@ -871,7 +873,7 @@ choose_board(int newflag) brdnum = -1; break; case 'y': - if (get_current_fav() != NULL) { + if (get_current_fav() != NULL || !IS_LISTING_FAV()){ if (cuser.userlevel) yank_flag ^= 1; /* FAV <=> BRD */ else @@ -1273,11 +1275,7 @@ Boards(void) init_brdbuf(); class_bid = 0; LIST_FAV(); - if( get_current_fav() == NULL ) - fav_load(); - fav_enter(); choose_board(0); - fav_leave(); return 0; } diff --git a/mbbsd/fav.c b/mbbsd/fav.c index 8aa132e2..e788726c 100644 --- a/mbbsd/fav.c +++ b/mbbsd/fav.c @@ -43,7 +43,6 @@ static int fav_number; /* definition of fav stack, the top one is in use now. */ static int fav_stack_num = 0; static fav_t *fav_stack[FAV_MAXDEPTH] = {0}; -static fav_t *fav_root = NULL; static char dirty = 0; @@ -289,7 +288,7 @@ fav_item_copy(fav_type_t *target, const fav_type_t *source){ } inline fav_t *get_fav_root(void){ - return fav_root; + return fav_stack[0]; } /** @@ -445,16 +444,6 @@ void fav_folder_out(void) fav_stack_pop(); } -void fav_enter(void) -{ - fav_stack_push_fav(fav_root); -} - -void fav_leave(void) -{ - fav_stack_pop(); -} - static void read_favrec(FILE *frp, fav_t *fp) { int i; @@ -514,12 +503,14 @@ int fav_load(void) { FILE *frp; char buf[128]; + fav_t *fp; if (fav_stack_num > 0) return -1; setuserfile(buf, FAV4); if (!dashf(buf)) { - fav_root = (fav_t *)fav_malloc(sizeof(fav_t)); + fp = (fav_t *)fav_malloc(sizeof(fav_t)); + fav_stack_push_fav(fp); #ifdef MEM_CHECK fav_set_memcheck(MEM_CHECK); #endif @@ -528,9 +519,10 @@ int fav_load(void) if ((frp = fopen(buf, "r")) == NULL) return -1; - fav_root = (fav_t *)fav_malloc(sizeof(fav_t)); + fp = (fav_t *)fav_malloc(sizeof(fav_t)); fav_number = 0; - read_favrec(frp, fav_root); + read_favrec(frp, fp); + fav_stack_push_fav(fp); fclose(frp); #ifdef MEM_CHECK fav_set_memcheck(MEM_CHECK); @@ -809,10 +801,15 @@ static void move_in_folder(fav_t *fav, int src, int dst) int i, count; fav_type_t tmp; - if (src == dst || fav == NULL) - return; - assert(src < fav->DataTail); - assert(dst < fav->DataTail); + if (fav == NULL) + return; + count = get_data_number(fav); + if (src < fav->DataTail); + src = count; + if (dst < fav->DataTail); + dst = count; + if (src == dst) + return; dirty = 1; |