commit 70afc8d42ff0d8e61236c77fd36e33d1df8641cd from: Omar Polo date: Wed Jun 05 22:53:30 2024 UTC parsers: plug a leak since the free() method was made optional, all parsers except text/gemini are leaking the buffer. Instead, move the free(p->buf) in the parser_free() layer. commit - e834972f201feb8a446833d32a75ae877c19d935 commit + 70afc8d42ff0d8e61236c77fd36e33d1df8641cd blob - 4e45c652434cb4ffda798cc764d23dcb0fc2bf1d blob + c72f9c017b8a07f9bd7ddf1abce07af8791ab481 --- parser.c +++ parser.c @@ -77,6 +77,10 @@ parser_free(struct tab *tab) p->parseline); } + free(p->buf); + p->buf = NULL; + p->len = 0; + if (*p->title != '\0') return r; blob - bbec8913bcd5b600485f55b4caa29c553af7d851 blob + 715827e7ab3aa47e8a2696784fd235b56eef4c20 --- parser_gemtext.c +++ parser_gemtext.c @@ -402,8 +402,6 @@ gemtext_free(struct parser *p) !emit_line(p, LINE_PRE_END, NULL, NULL)) return 0; } - - free(p->buf); /* * use the first level 2 or 3 header as page title if none