[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>
This commit is contained in:
Fumitoshi UKAI
2003-02-05 16:23:27 +00:00
parent 84fefac4a4
commit 4f8c42c5db
2 changed files with 17 additions and 5 deletions

View File

@@ -1,3 +1,11 @@
2003-02-06 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
* [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 <hsaka@mth.biglobe.ne.jp>
* [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 $

View File

@@ -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);