From 50584f9c86536defe77b96f31479619f29fe9eff Mon Sep 17 00:00:00 2001 From: piaip Date: Sun, 18 Sep 2005 04:36:22 +0000 Subject: fix ticket #10 git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3188 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/read.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'mbbsd') diff --git a/mbbsd/read.c b/mbbsd/read.c index 70fdbe3e..7e781de5 100644 --- a/mbbsd/read.c +++ b/mbbsd/read.c @@ -334,7 +334,16 @@ thread(const keeploc_t * locmem, int stypen) for( new_ln = pos + step ; new_ln > 0 && new_ln <= last_line && --jump > 0; new_ln += step ) { - get_record_keep(currdirect, &fh, sizeof(fileheader_t), new_ln, &fd); + + int rk = + get_record_keep(currdirect, &fh, sizeof(fileheader_t), new_ln, &fd); + + if(fd < 0 || rk < 0) + { + new_ln = pos; + break; + } + if( stypen & RS_TITLE ){ if( stypen & RS_FIRST ){ if( !strncmp(fh.title, key, PROPER_TITLE_LEN) ) @@ -353,14 +362,17 @@ thread(const keeploc_t * locmem, int stypen) break; } else{ // RS_AUTHOR - if( !strcmp(subject(fh.owner), key) ) + if( strcmp(subject(fh.owner), key) == EQUSTR ) break; } } + if( fd != -1 ) close(fd); + if( jump <= 0 || new_ln <= 0 || new_ln > last_line ) new_ln = (amatch == -1 ? pos : amatch); //didn't find + return new_ln; } -- cgit v1.2.3