about summary refs log tree commit homepage
path: root/mwrap_httpd.h
diff options
context:
space:
mode:
Diffstat (limited to 'mwrap_httpd.h')
-rw-r--r--mwrap_httpd.h18
1 files changed, 5 insertions, 13 deletions
diff --git a/mwrap_httpd.h b/mwrap_httpd.h
index aa4574a..1f706ea 100644
--- a/mwrap_httpd.h
+++ b/mwrap_httpd.h
@@ -420,7 +420,7 @@ static off_t write_loc_name(FILE *fp, const struct src_loc *l)
                         fprintf(fp, ":%zu", l->lineno);
         }
         if (l->bt_len) {
-                char **s = bt_syms(l->bt, l->bt_len);
+                AUTO_FREE char **s = bt_syms(l->bt, l->bt_len);
                 if (!s) return -1;
                 if (l->f) fputc('\n', fp);
 
@@ -436,7 +436,6 @@ static off_t write_loc_name(FILE *fp, const struct src_loc *l)
                         fputc('\n', fp);
                         fputs(s[i], fp);
                 }
-                free(s);
         }
         off_t end = ftello(fp);
         if (end < 0) {
@@ -560,14 +559,12 @@ static enum mw_qev each_gt(struct mw_h1 *h1, struct mw_h1req *h1r,
         struct mw_membuf ln;
         FILE *lp = memstream_new(&ln);
         if (!lp) return h1_close(h1);
-        struct h1_src_loc *hslv = accumulate(min, &hslc, lp);
+        AUTO_FREE struct h1_src_loc *hslv = accumulate(min, &hslc, lp);
         if (!hslv)
                 return h1_close(h1);
 
-        if (err_close(lp)) {
-                free(hslv);
+        if (err_close(lp))
                 return h1_close(h1);
-        }
 
         char *n = ln.ptr;
         for (size_t i = 0; i < hslc; ++i) {
@@ -575,7 +572,6 @@ static enum mw_qev each_gt(struct mw_h1 *h1, struct mw_h1req *h1r,
                 n += hslv[i].lname_len;
                 if (hslv[i].lname_len < 0) {
                         free(ln.ptr);
-                        free(hslv);
                         return h1_close(h1);
                 }
         }
@@ -628,7 +624,6 @@ static enum mw_qev each_gt(struct mw_h1 *h1, struct mw_h1req *h1r,
                 write_html(fp, hsl->loc_name, hsl->lname_len);
                 FPUTS("</a></td></tr>", fp);
         }
-        free(hslv);
         free(ln.ptr);
         FPUTS("</table></body></html>", fp);
         return h1_200(h1, fp, &mb);
@@ -1041,7 +1036,6 @@ static void *h1d_run(void *x) /* pthread_create cb */
 {
         struct mw_h1d *h1d = x;
         nfds_t i, nfds;
-        struct pollfd *pfd;
         int rc;
         struct mw_h1 *h1, *nxt;
         enum mw_qev ev;
@@ -1053,7 +1047,7 @@ static void *h1d_run(void *x) /* pthread_create cb */
                 cds_list_for_each_entry_safe(h1, nxt, &h1d->conn, nd)
                         if (poll_add(h1d, h1->fd, h1->events))
                                 h1_close(h1);
-                pfd = poll_detach(h1d, &nfds);
+                AUTO_FREE struct pollfd *pfd = poll_detach(h1d, &nfds);
                 rc = pfd ? poll(pfd, nfds, -1) : -1;
 
                 if (rc < 0) {
@@ -1083,10 +1077,8 @@ static void *h1d_run(void *x) /* pthread_create cb */
                                 }
                         }
                 }
-                free(pfd);
         }
-        pfd = poll_detach(h1d, &nfds);
-        free(pfd);
+        free(poll_detach(h1d, &nfds));
         cds_list_for_each_entry_safe(h1, nxt, &h1d->conn, nd)
                 h1_close(h1);
         return NULL;