aboutsummaryrefslogtreecommitdiff
path: root/src/libhtml
diff options
context:
space:
mode:
Diffstat (limited to 'src/libhtml')
-rw-r--r--src/libhtml/build.c14
-rw-r--r--src/libhtml/lex.c20
2 files changed, 23 insertions, 11 deletions
diff --git a/src/libhtml/build.c b/src/libhtml/build.c
index 7ce74449..b2387006 100644
--- a/src/libhtml/build.c
+++ b/src/libhtml/build.c
@@ -1815,7 +1815,7 @@ getitems(ItemSource* is, uchar* data, int datalen)
tab = newtable(++is->ntables,
aalign(tok),
adimen(tok, Awidth),
- aflagval(tok, Aborder),
+ aflagval(tok, Aborder),
auintval(tok, Acellspacing, TABSP),
auintval(tok, Acellpadding, TABPAD),
makebackground(nil, acolorval(tok, Abgcolor, ps->curbg.color)),
@@ -1916,8 +1916,8 @@ getitems(ItemSource* is, uchar* data, int datalen)
flags |= TFisth;
c = newtablecell(curtab->cells==nil? 1 : curtab->cells->cellid+1,
auintval(tok, Arowspan, 1),
- auintval(tok, Acolspan, 1),
- aalign(tok),
+ auintval(tok, Acolspan, 1),
+ aalign(tok),
adimen(tok, Awidth),
auintval(tok, Aheight, 0),
makebackground(nil, acolorval(tok, Abgcolor, tr->background.color)),
@@ -2127,6 +2127,7 @@ getitems(ItemSource* is, uchar* data, int datalen)
outerps = lastps(ps);
ans = outerps->items->next;
/* note: ans may be nil and di->kids not nil, if there's a frameset! */
+ freeitem(outerps->items);
outerps->items = newispacer(ISPnull);
outerps->lastit = outerps->items;
is->psstk = ps;
@@ -2134,6 +2135,7 @@ getitems(ItemSource* is, uchar* data, int datalen)
/* TODO evalscript(nil); */
;
}
+ freeitems(outerps->items);
return_ans:
if(dbgbuild) {
@@ -2143,6 +2145,7 @@ return_ans:
else
printitems(ans, "getitems returning:");
}
+ _freetokens(toks, tokslen);
return ans;
}
@@ -2442,6 +2445,9 @@ addtext(Pstate* ps, Rune* s)
free(s);
}
}
+ else {
+ free(s);
+ }
}
else { /* not literal mode */
if((ps->curstate&IFbrk) || ps->lastit == ps->items)
@@ -4434,7 +4440,7 @@ validtable(Table* t)
/* only when parsing is done is t->nrow set > 0 */
if(ok && t->nrow > 0 && t->ncol > 0) {
/* table is "finished" */
- for(i = 0; i < t->nrow && ok; i++)
+ for(i = 0; i < t->nrow && ok; i++)
ok = validtablerow(t->rows+i);
for(j = 0; j < t->ncol && ok; j++)
ok = validtablecol(t->cols+j);
diff --git a/src/libhtml/lex.c b/src/libhtml/lex.c
index 12127b58..49c5f502 100644
--- a/src/libhtml/lex.c
+++ b/src/libhtml/lex.c
@@ -31,11 +31,11 @@ Rune **tagnames;
char *_tagnames[] = {
" ",
"!",
- "a",
+ "a",
"abbr",
"acronym",
"address",
- "applet",
+ "applet",
"area",
"b",
"base",
@@ -540,8 +540,11 @@ _gettoks(uchar* data, int datalen, int chset, int mtype, int* plen)
if(dbglex)
fprint(2, "lex: returning %d tokens\n", ai);
*plen = ai;
- if(ai == 0)
+ free(ts);
+ if(ai == 0) {
+ free(a);
return nil;
+ }
return a;
}
@@ -603,15 +606,18 @@ getplaindata(TokenSource* ts, Token* a, int* pai)
}
/* Return concatenation of s and buf[0:j] */
+/* Frees s. */
static Rune*
buftostr(Rune* s, Rune* buf, int j)
{
+ Rune *tmp;
buf[j] = 0;
if(s == nil)
- s = _Strndup(buf, j);
- else
- s = _Strdup2(s, buf);
- return s;
+ tmp = _Strndup(buf, j);
+ else
+ tmp = _Strdup2(s, buf);
+ free(s);
+ return tmp;
}
/* Gather data up to next start-of-tag or end-of-buffer. */