From 4f8c42c5dbfe153c9b1ecc98a92813032787b2f6 Mon Sep 17 00:00:00 2001 From: Fumitoshi UKAI Date: Wed, 5 Feb 2003 16:23:27 +0000 Subject: [w3m-dev 03729] buf fix of reAnchorNewsheader() * anchor.c (reAnchorAny): check l->bpos (reAnchorNewsheader): check l->bpos strlen(*q) lineBuf[l->size] From: Hironori SAKAMOTO --- ChangeLog | 10 +++++++++- anchor.c | 12 ++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2a3431e..21cdb81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-02-06 Hironori SAKAMOTO + + * [w3m-dev 03729] buf fix of reAnchorNewsheader() + * anchor.c (reAnchorAny): check l->bpos + (reAnchorNewsheader): check l->bpos + strlen(*q) + lineBuf[l->size] + 2003-02-06 Hironori SAKAMOTO * [w3m-dev 03728] IPv6 hostname @@ -7019,4 +7027,4 @@ a * [w3m-dev 03276] compile error on EWS4800 * release-0-2-1 * import w3m-0.2.1 -$Id: ChangeLog,v 1.736 2003/02/05 16:18:23 ukai Exp $ +$Id: ChangeLog,v 1.737 2003/02/05 16:23:27 ukai Exp $ diff --git a/anchor.c b/anchor.c index a1d668f..8c2e955 100644 --- a/anchor.c +++ b/anchor.c @@ -1,4 +1,4 @@ -/* $Id: anchor.c,v 1.21 2003/01/23 18:37:20 ukai Exp $ */ +/* $Id: anchor.c,v 1.22 2003/02/05 16:23:28 ukai Exp $ */ #include "fm.h" #include "myctype.h" #include "regex.h" @@ -339,7 +339,7 @@ reAnchorAny(Buffer *buf, char *re, Anchor *(*anchorproc) (Buffer *, char *, char *, int, int)) { Line *l; - char *p, *p1, *p2; + char *p = NULL, *p1, *p2; if (re == NULL || *re == '\0') { return NULL; @@ -350,6 +350,8 @@ reAnchorAny(Buffer *buf, char *re, for (l = MarkAllPages ? buf->firstLine : buf->topLine; l != NULL && (MarkAllPages || l->linenumber < buf->topLine->linenumber + LASTLINE); l = l->next) { + if (p && l->bpos) + continue; p = l->lineBuf; for (;;) { if (regexMatch(p, &l->lineBuf[l->size] - p, p == l->lineBuf) == 1) { @@ -403,11 +405,13 @@ reAnchorNewsheader(Buffer *buf) } for (l = buf->firstLine; l != NULL && l->real_linenumber == 0; l = l->next) { + if (l->bpos) + continue; p = l->lineBuf; if (!IS_SPACE(*p)) { search = FALSE; for (q = header; *q; q++) { - if (!strncasecmp(p, *q, sizeof(*q) - 1)) { + if (!strncasecmp(p, *q, strlen(*q))) { search = TRUE; p = strchr(p, ':') + 1; break; @@ -417,7 +421,7 @@ reAnchorNewsheader(Buffer *buf) if (!search) continue; for (;;) { - if (regexMatch(p, &l->lineBuf[l->len] - p, p == l->lineBuf) + if (regexMatch(p, &l->lineBuf[l->size] - p, p == l->lineBuf) == 1) { matchedPosition(&p1, &p2); p = reAnchorPos(buf, l, p1, p2, _put_anchor_news); -- cgit v1.2.3