diff options
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 15 |
1 files changed, 7 insertions, 8 deletions
@@ -711,8 +711,10 @@ failure: return -1; } -static void free_search(struct search *const s) +static void free_search(void *const p) { + struct search *const s = p; + if (!s) return; @@ -735,7 +737,7 @@ static int search_step(const struct http_payload *const p, if (page_search(r, &s->search)) { fprintf(stderr, "%s: page_search failed\n", __func__); - goto failure; + return -1; } free_search(s); @@ -743,17 +745,13 @@ static int search_step(const struct http_payload *const p, case CFTW_FATAL: fprintf(stderr, "%s: cftw_step failed\n", __func__); - goto failure; + return -1; case CFTW_AGAIN: break; } return 0; - -failure: - free_search(s); - return -1; } static int search(const struct http_payload *const p, @@ -822,7 +820,8 @@ static int search(const struct http_payload *const p, *r = (const struct http_response) { .step.payload = search_step, - .args = s + .args = s, + .free = free_search }; s->search.root = s->root.str; |
