[w3m-dev 04153] NEXT_LINK error
Hiroyuki Ito <[email protected]> Sun, 27 Nov 2005 22:22:46 +0900 (JST)
| Newsgroups | gmane.comp.web.w3m.devel |
|---|---|
| Message-ID | <[email protected]> |
html NEXT_LINK
<table width="10">
<tr><td>a <nobr><A href="b">b</a> <a href="c">c</a></nobr></td></tr>
</table>
HTMLlineproc2body
<a>
Index: anchor.c
===================================================================
RCS file: /cvsroot/w3m/w3m/anchor.c,v
retrieving revision 1.30
diff -u -r1.30 anchor.c
--- anchor.c 26 Sep 2003 17:59:51 -0000 1.30
+++ anchor.c 26 Nov 2005 05:52:54 -0000
@@ -175,6 +175,8 @@
return NULL;
for (i = 0; i < al->nanchor; i++) {
a = &al->anchors[i];
+ if (a->hseq < 0)
+ continue;
if (!strcmp(a->url, str))
return a;
}
@@ -471,6 +473,7 @@
}
ml->marks[seq].line = line;
ml->marks[seq].pos = pos;
+ ml->marks[seq].invalid = 0;
return ml;
}
@@ -778,7 +781,7 @@
al = buf->href;
for (i = 0; i < al->nanchor; i++) {
a = &al->anchors[i];
- if (a->slave)
+ if (a->hseq < 0 || a->slave)
continue;
parseURL2(a->url, &pu, baseURL(buf));
p = parsedURL2Str(&pu)->ptr;
Index: file.c
===================================================================
RCS file: /cvsroot/w3m/w3m/file.c,v
retrieving revision 1.237
diff -u -r1.237 file.c
--- file.c 4 Jan 2005 15:51:04 -0000 1.237
+++ file.c 26 Nov 2005 05:52:54 -0000
@@ -5281,6 +5281,17 @@
buf->hmarklist =
putHmarker(buf->hmarklist, currentLn(buf),
pos, hseq - 1);
+ else if (hseq < 0) {
+ int h = -hseq - 1;
+ if (buf->hmarklist &&
+ h < buf->hmarklist->nmark &&
+ buf->hmarklist->marks[h].invalid) {
+ buf->hmarklist->marks[h].pos = pos;
+ buf->hmarklist->marks[h].line = currentLn(buf);
+ buf->hmarklist->marks[h].invalid = 0;
+ hseq = -hseq;
+ }
+ }
if (id && idFrame)
idFrame->body->nameList =
putAnchor(idFrame->body->nameList, id, NULL,
@@ -5300,8 +5311,12 @@
a_href->end.line = currentLn(buf);
a_href->end.pos = pos;
if (a_href->start.line == a_href->end.line &&
- a_href->start.pos == a_href->end.pos)
+ a_href->start.pos == a_href->end.pos) {
+ if (buf->hmarklist &&
+ a_href->hseq < buf->hmarklist->nmark)
+ buf->hmarklist->marks[a_href->hseq].invalid = 1;
a_href->hseq = -1;
+ }
a_href = NULL;
}
break;
Index: fm.h
===================================================================
RCS file: /cvsroot/w3m/w3m/fm.h,v
retrieving revision 1.127
diff -u -r1.127 fm.h
--- fm.h 15 Jul 2004 16:44:37 -0000 1.127
+++ fm.h 26 Nov 2005 05:52:55 -0000
@@ -336,6 +336,7 @@
typedef struct {
int line;
int pos;
+ int invalid;
} BufferPoint;
#ifdef USE_IMAGE