diff options
author | Fumitoshi UKAI <ukai@debian.or.jp> | 2003-02-05 16:23:27 +0000 |
---|---|---|
committer | Fumitoshi UKAI <ukai@debian.or.jp> | 2003-02-05 16:23:27 +0000 |
commit | 4f8c42c5dbfe153c9b1ecc98a92813032787b2f6 (patch) | |
tree | 58c91a264527d96e6ebe73ef46cf304b36ab270c /anchor.c | |
parent | [w3m-dev 03728] IPv6 hostname (diff) | |
download | w3m-4f8c42c5dbfe153c9b1ecc98a92813032787b2f6.tar.gz w3m-4f8c42c5dbfe153c9b1ecc98a92813032787b2f6.zip |
[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 <hsaka@mth.biglobe.ne.jp>
Diffstat (limited to '')
-rw-r--r-- | anchor.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -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); |