From 283cf90684ee753e4120dfdf17686d0346c281a9 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Thu, 30 Apr 2020 11:58:54 +0200 Subject: [PATCH] Everything compiles --- inc/mthread/mthread.h | 2 +- src/mthread/mthread.c | 6 +++--- src/repo/downloader.c | 19 +++++++++++++++---- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/inc/mthread/mthread.h b/inc/mthread/mthread.h index 2e76942f..cef1aa21 100644 --- a/inc/mthread/mthread.h +++ b/inc/mthread/mthread.h @@ -48,7 +48,7 @@ typedef struct mthread_sem_s mthread_sem_t; /* Function for handling threads. */ -int mthread_create(mthread_t *__threadp, const mthread_attr_t *__attr, void *(*__start_routine) (void *), void *__arg); +int mthread_create(mthread_t *__threadp, const mthread_attr_t __attr, void *(*__start_routine) (void *), void *__arg); mthread_t mthread_self(void); int mthread_equal (mthread_t __thread1, mthread_t __thread2); diff --git a/src/mthread/mthread.c b/src/mthread/mthread.c index 78c9dabc..560a0fc3 100644 --- a/src/mthread/mthread.c +++ b/src/mthread/mthread.c @@ -290,7 +290,7 @@ mthread_init(void) if ATTR is NULL), and call function START_ROUTINE with given arguments ARG. */ int -mthread_create(mthread_t *__threadp, const mthread_attr_t *__attr, void *(*__start_routine) (void *), void *__arg) +mthread_create(mthread_t *__threadp, const mthread_attr_t __attr, void *(*__start_routine) (void *), void *__arg) { if (is_mthread_init == 0) { __mthread_lib_init(0); @@ -309,9 +309,9 @@ mthread_create(mthread_t *__threadp, const mthread_attr_t *__attr, void *(*__sta mthread_init_thread(mctx); if (__attr) { - if (*__attr & ATTR_DETACHED) + if (__attr & ATTR_DETACHED) mctx->detached = DETACHED; - if (*__attr & ATTR_DETACHED_FREE) + if (__attr & ATTR_DETACHED_FREE) mctx->detached = DETACHED_FREE; } diff --git a/src/repo/downloader.c b/src/repo/downloader.c index 0ae589a7..d6ad28e1 100644 --- a/src/repo/downloader.c +++ b/src/repo/downloader.c @@ -9,7 +9,7 @@ #include <mthread/mthread.h> #include <lektor/macro.h> #include <lektor/repo.h> -#include <lektor/thread.h> +#include <lektor/database.h> /* Find it in the repo/curl.c file. FIXME */ extern int @@ -49,7 +49,13 @@ repo_download_id_async(struct lkt_repo *const repo, const size_t id) kara->id = id; /* Thread */ - return mthread_create(th, NULL, __repo_download_id_async, arg); + mthread_t *th = calloc(1, sizeof(mthread_t)); + if (!th) { + free(arg); + LOG_ERROR_SCT("REPO", "%s", "Out of memory"); + return 1; + } + return mthread_create(th, ATTR_DETACHED_FREE, __repo_download_id_async, arg); } /* Get all the kara, make them unavailable */ @@ -96,7 +102,7 @@ __handle_got_json(volatile sqlite3 *db, struct lkt_repo *repo, struct json_objec if (safe_json_get_int32(kara_json, "song_number", &kara->mdt.song_number)) goto err; - if (database_update_add(db, kara->filename, &kara->mdt, kara->id, false)) + if (database_update_add((sqlite3 *) db, kara->filename, &kara->mdt, kara->id, false)) LOG_ERROR_SCT("REPO", "Could not add unavailable kara %ld to db", kara->id); goto err; } @@ -119,5 +125,10 @@ __repo_get_all_id_async(void *arg) inline int repo_get_allid_async(struct lkt_repo *const repo) { - return mthread_create(th, NULL, __repo_get_all_id_async, repo); + mthread_t *th = calloc(1, sizeof(mthread_t)); + if (!th) { + LOG_ERROR_SCT("REPO", "%s", "Out of memory"); + return 1; + } + return mthread_create(th, ATTR_DETACHED_FREE, __repo_get_all_id_async, repo); } -- GitLab