mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-24 11:41:58 +00:00
libhtml: plug quite a few memory leaks
Change-Id: I45bd62a590373669e90183cc2b2ee56570c007f5
This commit is contained in:
parent
2738cc3cfc
commit
8241eca986
2 changed files with 13 additions and 4 deletions
|
@ -2127,6 +2127,7 @@ getitems(ItemSource* is, uchar* data, int datalen)
|
||||||
outerps = lastps(ps);
|
outerps = lastps(ps);
|
||||||
ans = outerps->items->next;
|
ans = outerps->items->next;
|
||||||
/* note: ans may be nil and di->kids not nil, if there's a frameset! */
|
/* note: ans may be nil and di->kids not nil, if there's a frameset! */
|
||||||
|
freeitem(outerps->items);
|
||||||
outerps->items = newispacer(ISPnull);
|
outerps->items = newispacer(ISPnull);
|
||||||
outerps->lastit = outerps->items;
|
outerps->lastit = outerps->items;
|
||||||
is->psstk = ps;
|
is->psstk = ps;
|
||||||
|
@ -2134,6 +2135,7 @@ getitems(ItemSource* is, uchar* data, int datalen)
|
||||||
/* TODO evalscript(nil); */
|
/* TODO evalscript(nil); */
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
freeitems(outerps->items);
|
||||||
|
|
||||||
return_ans:
|
return_ans:
|
||||||
if(dbgbuild) {
|
if(dbgbuild) {
|
||||||
|
@ -2143,6 +2145,7 @@ return_ans:
|
||||||
else
|
else
|
||||||
printitems(ans, "getitems returning:");
|
printitems(ans, "getitems returning:");
|
||||||
}
|
}
|
||||||
|
_freetokens(toks, tokslen);
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -540,8 +540,11 @@ _gettoks(uchar* data, int datalen, int chset, int mtype, int* plen)
|
||||||
if(dbglex)
|
if(dbglex)
|
||||||
fprint(2, "lex: returning %d tokens\n", ai);
|
fprint(2, "lex: returning %d tokens\n", ai);
|
||||||
*plen = ai;
|
*plen = ai;
|
||||||
if(ai == 0)
|
free(ts);
|
||||||
|
if(ai == 0) {
|
||||||
|
free(a);
|
||||||
return nil;
|
return nil;
|
||||||
|
}
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -603,15 +606,18 @@ getplaindata(TokenSource* ts, Token* a, int* pai)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return concatenation of s and buf[0:j] */
|
/* Return concatenation of s and buf[0:j] */
|
||||||
|
/* Frees s. */
|
||||||
static Rune*
|
static Rune*
|
||||||
buftostr(Rune* s, Rune* buf, int j)
|
buftostr(Rune* s, Rune* buf, int j)
|
||||||
{
|
{
|
||||||
|
Rune *tmp;
|
||||||
buf[j] = 0;
|
buf[j] = 0;
|
||||||
if(s == nil)
|
if(s == nil)
|
||||||
s = _Strndup(buf, j);
|
tmp = _Strndup(buf, j);
|
||||||
else
|
else
|
||||||
s = _Strdup2(s, buf);
|
tmp = _Strdup2(s, buf);
|
||||||
return s;
|
free(s);
|
||||||
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Gather data up to next start-of-tag or end-of-buffer. */
|
/* Gather data up to next start-of-tag or end-of-buffer. */
|
||||||
|
|
Loading…
Reference in a new issue