aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/main.c b/main.c
index 7a367b0..436c50d 100644
--- a/main.c
+++ b/main.c
@@ -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;