]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/libhtml/lex.c
/sys/src/lib*: clean up
[plan9front.git] / sys / src / libhtml / lex.c
index 70106b9b481a89cb9d1472c7be6c3cb4702164d2..871c1df8e325a48e267a74fd424f89984c350b81 100644 (file)
@@ -320,6 +320,7 @@ StringInt   chartab[]= {
        {L"amp", 38},
        {L"and", 8743},
        {L"ang", 8736},
+       {L"apos", 39},
        {L"aring", 229},
        {L"asymp", 8776},
        {L"atilde", 227},
@@ -610,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);
@@ -638,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);
@@ -731,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;
 }
 
@@ -899,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];
@@ -947,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
@@ -1112,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;
@@ -1461,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;
 }