diff --git a/spa/include/spa/pod/iter.h b/spa/include/spa/pod/iter.h index 1bd569968..f4958251c 100644 --- a/spa/include/spa/pod/iter.h +++ b/spa/include/spa/pod/iter.h @@ -107,7 +107,7 @@ SPA_API_POD_ITER struct spa_pod_control *spa_pod_control_next(const struct spa_p (iter) = (__typeof__(iter))spa_pod_next(iter)) #define SPA_POD_STRUCT_FOREACH(obj, iter) \ - SPA_POD_FOREACH(SPA_POD_BODY(obj), SPA_POD_BODY_SIZE(obj), iter) + SPA_POD_FOREACH(SPA_POD_STRUCT_BODY(obj), SPA_POD_BODY_SIZE(obj), iter) #define SPA_POD_OBJECT_BODY_FOREACH(body, size, iter) \ for ((iter) = spa_pod_prop_first(body); \ diff --git a/spa/include/spa/pod/pod.h b/spa/include/spa/pod/pod.h index f7627f48e..3703b4b06 100644 --- a/spa/include/spa/pod/pod.h +++ b/spa/include/spa/pod/pod.h @@ -138,6 +138,9 @@ struct spa_pod_choice { struct spa_pod_choice_body body; }; +#define SPA_POD_STRUCT_BODY(pod) SPA_PTROFF((pod),sizeof(struct spa_pod),struct spa_pod) +#define SPA_POD_STRUCT_BODY_CONST(pod) SPA_PTROFF((pod),sizeof(struct spa_pod),const struct spa_pod) + struct spa_pod_struct { struct spa_pod pod; /* one or more spa_pod follow */