mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-03-30 11:10:29 -04:00
pod: use _deref and _frame in safe place
In the filter, don't _deref or use _frame before we are going to add more pods to the builder. If we are using a dynamic builder, the dereffed pod might become invalid when the memory is reallocated. Instead, take the offset of the frame and deref later when we are not going to add more things.
This commit is contained in:
parent
ff7fb675f1
commit
ed7398a64a
2 changed files with 16 additions and 9 deletions
|
|
@ -93,7 +93,7 @@ SPA_API_POD_BUILDER void spa_pod_builder_init(struct spa_pod_builder *builder, v
|
|||
}
|
||||
|
||||
SPA_API_POD_BUILDER struct spa_pod *
|
||||
spa_pod_builder_deref(struct spa_pod_builder *builder, uint32_t offset)
|
||||
spa_pod_builder_deref_fallback(struct spa_pod_builder *builder, uint32_t offset, struct spa_pod *fallback)
|
||||
{
|
||||
uint32_t size = builder->size;
|
||||
if (offset + UINT64_C(8) <= size) {
|
||||
|
|
@ -102,7 +102,13 @@ spa_pod_builder_deref(struct spa_pod_builder *builder, uint32_t offset)
|
|||
SPA_POD_IS_VALID(pod))
|
||||
return pod;
|
||||
}
|
||||
return NULL;
|
||||
return fallback;
|
||||
}
|
||||
|
||||
SPA_API_POD_BUILDER struct spa_pod *
|
||||
spa_pod_builder_deref(struct spa_pod_builder *builder, uint32_t offset)
|
||||
{
|
||||
return (struct spa_pod*)spa_pod_builder_deref_fallback(builder, offset, NULL);
|
||||
}
|
||||
|
||||
SPA_API_POD_BUILDER struct spa_pod *
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue