diff options
author | kcwu <kcwu@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2007-05-27 22:08:24 +0800 |
---|---|---|
committer | kcwu <kcwu@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2007-05-27 22:08:24 +0800 |
commit | cfeb386b61341ef5dd85a5320f5854e724e2bdf6 (patch) | |
tree | 7a935d79f8c788ca7696279b1a3aa1f519e551fd /mbbsd/board.c | |
parent | a8ac9d593f193d06a2dff50bb91f81bfee6b9a94 (diff) | |
download | pttbbs-cfeb386b61341ef5dd85a5320f5854e724e2bdf6.tar pttbbs-cfeb386b61341ef5dd85a5320f5854e724e2bdf6.tar.gz pttbbs-cfeb386b61341ef5dd85a5320f5854e724e2bdf6.tar.bz2 pttbbs-cfeb386b61341ef5dd85a5320f5854e724e2bdf6.tar.lz pttbbs-cfeb386b61341ef5dd85a5320f5854e724e2bdf6.tar.xz pttbbs-cfeb386b61341ef5dd85a5320f5854e724e2bdf6.tar.zst pttbbs-cfeb386b61341ef5dd85a5320f5854e724e2bdf6.zip |
* rewrite namecomplete2. Avoid small allocation, e.g. linked list,
since some allocator, e.g. dielibc, may not return memory to OS.
This saves about 1gb memory for ptt.
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3517 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/board.c')
-rw-r--r-- | mbbsd/board.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/mbbsd/board.c b/mbbsd/board.c index bb23d3ba..8a228287 100644 --- a/mbbsd/board.c +++ b/mbbsd/board.c @@ -410,17 +410,18 @@ search_board(void) { int num; char genbuf[IDLEN + 2]; + struct NameList namelist; + move(0, 0); clrtoeol(); - CreateNameList(); + NameList_init(&namelist); assert(brdnum<=nbrdsize); for (num = 0; num < brdnum; num++) if (!IS_LISTING_FAV() || (nbrd[num].myattr & NBRD_BOARD && HasBoardPerm(B_BH(&nbrd[num]))) ) - AddNameList(B_BH(&nbrd[num])->brdname); - namecomplete(MSG_SELECT_BOARD, genbuf); - FreeNameList(); - toplev = NULL; + NameList_add(&namelist, B_BH(&nbrd[num])->brdname); + namecomplete2(&namelist, MSG_SELECT_BOARD, genbuf); + NameList_delete(&namelist); #ifdef DEBUG vmsg(genbuf); |