glib-aux/prioq: refactor find_item() in NMPrioq
This commit is contained in:
@@ -278,24 +278,26 @@ find_item(NMPrioq *q, void *data, unsigned *idx)
|
|||||||
|
|
||||||
_nm_assert_q(q);
|
_nm_assert_q(q);
|
||||||
|
|
||||||
if (q->_priv.n_items <= 0)
|
if (G_UNLIKELY(!idx)) {
|
||||||
return NULL;
|
/* We allow using NMPrioq without "idx". In that case, it does a linear
|
||||||
|
* search for the data. */
|
||||||
if (idx) {
|
|
||||||
if (*idx == NM_PRIOQ_IDX_NULL || *idx >= q->_priv.n_items)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
i = &q->_priv.items[*idx];
|
|
||||||
if (i->data == data)
|
|
||||||
return i;
|
|
||||||
} else {
|
|
||||||
for (i = q->_priv.items; i < &q->_priv.items[q->_priv.n_items]; i++) {
|
for (i = q->_priv.items; i < &q->_priv.items[q->_priv.n_items]; i++) {
|
||||||
if (i->data == data)
|
if (i->data == data)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
if (*idx >= q->_priv.n_items) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = &q->_priv.items[*idx];
|
||||||
|
|
||||||
|
if (i->data != data)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
Reference in New Issue
Block a user