]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/libhtml/lex.c
nusbrc: add LG G5 for nusb/ether
[plan9front.git] / sys / src / libhtml / lex.c
index 215e45784ccede50982016e6367b9d3f616ded79..871c1df8e325a48e267a74fd424f89984c350b81 100644 (file)
@@ -611,6 +611,7 @@ _gettoks(uchar* data, int datalen, int chset, int mtype, int* plen)
        a = 0;
        if(ts->mtype == TextHtml) {
                for(;;) {
+                       assert(ai <= alen);
                        if(alen - ai < ToksChunk/32) {
                                alen += ToksChunk;
                                a = erealloc(a, alen*sizeof *a);
@@ -639,6 +640,7 @@ _gettoks(uchar* data, int datalen, int chset, int mtype, int* plen)
        else {
                // plain text (non-html) tokens
                for(;;) {
+                       assert(ai <= alen);
                        if(alen - ai < ToksChunk/32) {
                                alen += ToksChunk;
                                a = erealloc(a, alen*sizeof *a);
@@ -732,6 +734,7 @@ buftostr(Rune* s, Rune* buf, int j)
                memcpy(&s[i], buf, j*sizeof *s);
                s[i+j] = 0;
        }
+       setmalloctag(s, getcallerpc(&s));
        return s;
 }
 
@@ -900,6 +903,7 @@ gettag(TokenSource* ts, int starti, Token* a, int* pai)
        Token*  tok;
        Rune    buf[BIGBUFSIZE];
 
+       al = nil;
        rbra = 0;
        nexti = ts->i;
        tok = &a[*pai];
@@ -948,7 +952,6 @@ gettag(TokenSource* ts, int starti, Token* a, int* pai)
        else
                tok->text = _Strndup(buf, i);   // for warning print, in build
        // attribute gathering loop
-       al = nil;
        while(1) {
                // look for "ws name" or "ws name ws = ws val"  (ws=whitespace)
                // skip whitespace
@@ -1113,6 +1116,7 @@ eob_done:
        if(warn)
                fprint(2, "warning: incomplete tag at end of page\n");
        backup(ts, nexti);
+       freeattrs(al);
        tok->tag = Data;
        tok->text = _Strdup(L"<");
        return Data;
@@ -1462,6 +1466,7 @@ newattr(int attid, Rune* value, Attr* link)
        ans->attid = attid;
        ans->value = value;
        ans->next = link;
+       setmalloctag(ans, getcallerpc(&attid));
        return ans;
 }