From: Yu Watanabe Date: Tue, 28 Sep 2021 06:14:50 +0000 (+0900) Subject: prioq: introduce prioq_ensure_put() X-Git-Tag: v250-rc1~612^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5bff20ea62706b05f599e915da0a5934bd520d0c;p=thirdparty%2Fsystemd.git prioq: introduce prioq_ensure_put() --- diff --git a/src/basic/prioq.c b/src/basic/prioq.c index 559e5d124d2..c15dcb26af8 100644 --- a/src/basic/prioq.c +++ b/src/basic/prioq.c @@ -173,6 +173,16 @@ int prioq_put(Prioq *q, void *data, unsigned *idx) { return 0; } +int prioq_ensure_put(Prioq **q, compare_func_t compare_func, void *data, unsigned *idx) { + int r; + + r = prioq_ensure_allocated(q, compare_func); + if (r < 0) + return r; + + return prioq_put(*q, data, idx); +} + static void remove_item(Prioq *q, struct prioq_item *i) { struct prioq_item *l; diff --git a/src/basic/prioq.h b/src/basic/prioq.h index 7c766476113..508db88026e 100644 --- a/src/basic/prioq.h +++ b/src/basic/prioq.h @@ -16,6 +16,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(Prioq*, prioq_free); int prioq_ensure_allocated(Prioq **q, compare_func_t compare_func); int prioq_put(Prioq *q, void *data, unsigned *idx); +int prioq_ensure_put(Prioq **q, compare_func_t compare_func, void *data, unsigned *idx); int prioq_remove(Prioq *q, void *data, unsigned *idx); int prioq_reshuffle(Prioq *q, void *data, unsigned *idx);