aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2018-06-29 20:31:21 +0700
committerVadim Yanitskiy <axilirator@gmail.com>2018-06-29 20:54:04 +0700
commit6d0156b89a49bc4f482f55fb432375d04d449008 (patch)
treea06eacf8d65c406d8c98ca82c468b8285acb1aff
parent379b657c5754832eb518c6477960daa43318909a (diff)
procqueue.c: rely on item type instead of its position
In the osmo_gapk_pq_prepare() we do allocate an item's buffer conditionally, only when its type is not sink, because an output buffer is not required for sink. Let's use a bit more elegant way to check, whether item is sink. Change-Id: I770a1d02273d9d8301a9e4ec72426fb8f4060277
-rw-r--r--src/procqueue.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/src/procqueue.c b/src/procqueue.c
index 78dee4d..28ad1cf 100644
--- a/src/procqueue.c
+++ b/src/procqueue.c
@@ -159,25 +159,27 @@ int
osmo_gapk_pq_prepare(struct osmo_gapk_pq *pq)
{
struct osmo_gapk_pq_item *item;
+ unsigned int buf_size;
/* Iterate over all items in queue */
llist_for_each_entry(item, &pq->items, list) {
/* The sink item doesn't require an output buffer */
- if (item->list.next != &pq->items) {
- unsigned int buf_size = item->len_out;
-
- /**
- * Use maximum known buffer size
- * for variable-length codec output
- */
- if (!buf_size)
- buf_size = VAR_BUF_SIZE;
-
- /* Allocate memory for an output buffer */
- item->buf = talloc_named_const(item, buf_size, ".buffer");
- if (!item->buf)
- return -ENOMEM;
- }
+ if (item->type == OSMO_GAPK_ITEM_TYPE_SINK)
+ continue;
+
+ buf_size = item->len_out;
+
+ /**
+ * Use maximum known buffer size
+ * for variable-length codec output
+ */
+ if (!buf_size)
+ buf_size = VAR_BUF_SIZE;
+
+ /* Allocate memory for an output buffer */
+ item->buf = talloc_named_const(item, buf_size, ".buffer");
+ if (!item->buf)
+ return -ENOMEM;
}
return 0;