chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
resolved: fix crash when shutting down
[elogind.git]
/
src
/
shared
/
prioq.c
diff --git
a/src/shared/prioq.c
b/src/shared/prioq.c
index a2205719b47bf6dc1dfc01ccf52ec02a1af6438d..b89888be0e8d5460313ffc3e9712856f214ce5d2 100644
(file)
--- a/
src/shared/prioq.c
+++ b/
src/shared/prioq.c
@@
-45,12
+45,14
@@
Prioq *prioq_new(compare_func_t compare_func) {
return q;
}
return q;
}
-
void
prioq_free(Prioq *q) {
+
Prioq*
prioq_free(Prioq *q) {
if (!q)
if (!q)
- return;
+ return
NULL
;
free(q->items);
free(q);
free(q->items);
free(q);
+
+ return NULL;
}
int prioq_ensure_allocated(Prioq **q, compare_func_t compare_func) {
}
int prioq_ensure_allocated(Prioq **q, compare_func_t compare_func) {
@@
-211,13
+213,14
@@
static void remove_item(Prioq *q, struct prioq_item *i) {
}
}
}
}
-static struct prioq_item* find_item(Prioq *q, void *data, unsigned *idx) {
+
_pure_
static struct prioq_item* find_item(Prioq *q, void *data, unsigned *idx) {
struct prioq_item *i;
assert(q);
if (idx) {
struct prioq_item *i;
assert(q);
if (idx) {
- if (*idx > q->n_items)
+ if (*idx == PRIOQ_IDX_NULL ||
+ *idx > q->n_items)
return NULL;
i = q->items + *idx;
return NULL;
i = q->items + *idx;
@@
-294,8
+297,8
@@
unsigned prioq_size(Prioq *q) {
return 0;
return q->n_items;
return 0;
return q->n_items;
-
}
}
+
bool prioq_isempty(Prioq *q) {
if (!q)
bool prioq_isempty(Prioq *q) {
if (!q)