mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-01 22:58:50 -04:00
builder: make _rewind part of _reset()
_reset() should also rewind the work that has been done. We don't need _rewind() anymore then.
This commit is contained in:
parent
350e8051a7
commit
891c5fd79d
2 changed files with 9 additions and 13 deletions
|
|
@ -78,7 +78,11 @@ spa_pod_builder_set_callbacks(struct spa_pod_builder *builder,
|
|||
static inline void
|
||||
spa_pod_builder_reset(struct spa_pod_builder *builder, struct spa_pod_builder_state *state)
|
||||
{
|
||||
struct spa_pod_frame *f;
|
||||
uint32_t size = builder->state.offset - state->offset;
|
||||
builder->state = *state;
|
||||
for (f = builder->state.frame; f ; f = f->parent)
|
||||
f->pod.size -= size;
|
||||
}
|
||||
|
||||
static inline void spa_pod_builder_init(struct spa_pod_builder *builder, void *data, uint32_t size)
|
||||
|
|
@ -173,15 +177,6 @@ static inline void *spa_pod_builder_pop(struct spa_pod_builder *builder, struct
|
|||
return pod;
|
||||
}
|
||||
|
||||
static inline void spa_pod_builder_rewind(struct spa_pod_builder *builder, uint32_t offset)
|
||||
{
|
||||
struct spa_pod_frame *f;
|
||||
uint32_t size = builder->state.offset - offset;
|
||||
builder->state.offset -= size;
|
||||
for (f = builder->state.frame; f ; f = f->parent)
|
||||
f->pod.size -= size;
|
||||
}
|
||||
|
||||
static inline int
|
||||
spa_pod_builder_primitive(struct spa_pod_builder *builder, const struct spa_pod *p)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1458,6 +1458,7 @@ static void test_overflow(void)
|
|||
{
|
||||
uint8_t buffer[1024];
|
||||
struct spa_pod_builder b = { 0 };
|
||||
struct spa_pod_builder_state state;
|
||||
struct spa_pod_frame f[2];
|
||||
uint32_t idx;
|
||||
const char *labels[] = {
|
||||
|
|
@ -1489,12 +1490,14 @@ static void test_overflow(void)
|
|||
spa_pod_builder_init(&b, buffer, sizeof(buffer));
|
||||
|
||||
spa_pod_builder_push_object(&b, &f[0], SPA_TYPE_OBJECT_PropInfo, SPA_PARAM_PropInfo);
|
||||
spa_pod_builder_add(&b,
|
||||
spa_pod_builder_add(&b,
|
||||
SPA_PROP_INFO_id, SPA_POD_Id(32567359),
|
||||
SPA_PROP_INFO_type, SPA_POD_CHOICE_ENUM_Int(1, 0),
|
||||
SPA_PROP_INFO_name, SPA_POD_String("DV Timings"),
|
||||
0);
|
||||
|
||||
spa_pod_builder_get_state(&b, &state),
|
||||
|
||||
spa_pod_builder_prop(&b, SPA_PROP_INFO_labels, 0);
|
||||
spa_pod_builder_push_struct(&b, &f[1]);
|
||||
|
||||
|
|
@ -1505,9 +1508,7 @@ static void test_overflow(void)
|
|||
spa_assert(b.state.offset > sizeof(buffer));
|
||||
pod = spa_pod_builder_pop(&b, &f[1]);
|
||||
spa_assert(pod == NULL);
|
||||
spa_pod_builder_rewind(&b, f[1].offset);
|
||||
|
||||
spa_pod_builder_none(&b);
|
||||
spa_pod_builder_reset(&b, &state);
|
||||
|
||||
spa_pod_builder_prop(&b, SPA_PROP_INFO_labels, 0);
|
||||
spa_pod_builder_push_struct(&b, &f[1]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue