summaryrefslogtreecommitdiffstats
path: root/mbbsd/fav.c
diff options
context:
space:
mode:
authorvictor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-08-29 11:22:46 +0800
committervictor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-08-29 11:22:46 +0800
commit5544af605f9b9c5f1f36ea0e5c42fef1c88af97f (patch)
treed5585115252103dbf469cc8c9adee775323ff0ed /mbbsd/fav.c
parentcd3513b90098e739976c40819e24f14de3b7e33f (diff)
downloadpttbbs-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/fav.c')
-rw-r--r--mbbsd/fav.c35
1 files changed, 16 insertions, 19 deletions
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;