mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-18 07:00:06 -05:00
Fix some badly-behaved macros
Some macros evaluated their arguments more than once when it was not needed, or were missing parentheses.
This commit is contained in:
parent
bb4f274ae0
commit
671a7102ff
46 changed files with 162 additions and 156 deletions
|
|
@ -84,25 +84,25 @@ enum spa_direction {
|
|||
|
||||
#define SPA_DIRECTION_REVERSE(d) ((d) ^ 1)
|
||||
|
||||
#define SPA_RECTANGLE(width,height) (struct spa_rectangle){ width, height }
|
||||
#define SPA_RECTANGLE(width,height) ((struct spa_rectangle){ (width), (height) })
|
||||
struct spa_rectangle {
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
};
|
||||
|
||||
#define SPA_POINT(x,y) (struct spa_point){ x, y }
|
||||
#define SPA_POINT(x,y) ((struct spa_point){ (x), (y) })
|
||||
struct spa_point {
|
||||
int32_t x;
|
||||
int32_t y;
|
||||
};
|
||||
|
||||
#define SPA_REGION(x,y,width,height) (struct spa_region){ SPA_POINT(x,y), SPA_RECTANGLE(width,height) }
|
||||
#define SPA_REGION(x,y,width,height) ((struct spa_region){ SPA_POINT(x,y), SPA_RECTANGLE(width,height) })
|
||||
struct spa_region {
|
||||
struct spa_point position;
|
||||
struct spa_rectangle size;
|
||||
};
|
||||
|
||||
#define SPA_FRACTION(num,denom) (struct spa_fraction){ num, denom }
|
||||
#define SPA_FRACTION(num,denom) ((struct spa_fraction){ (num), (denom) })
|
||||
struct spa_fraction {
|
||||
uint32_t num;
|
||||
uint32_t denom;
|
||||
|
|
@ -120,7 +120,7 @@ struct spa_fraction {
|
|||
* ```
|
||||
*/
|
||||
#define SPA_FOR_EACH_ELEMENT(arr, ptr) \
|
||||
for (ptr = arr; (void*)ptr < SPA_PTROFF(arr, sizeof(arr), void); ptr++)
|
||||
for ((ptr) = arr; (void*)(ptr) < SPA_PTROFF(arr, sizeof(arr), void); (ptr)++)
|
||||
|
||||
#define SPA_ABS(a) \
|
||||
({ \
|
||||
|
|
@ -156,7 +156,7 @@ struct spa_fraction {
|
|||
#define SPA_SWAP(a,b) \
|
||||
({ \
|
||||
__typeof__(a) _t = (a); \
|
||||
a = b; b = _t; \
|
||||
(a) = b; (b) = _t; \
|
||||
})
|
||||
|
||||
#define SPA_TYPECHECK(type,x) \
|
||||
|
|
@ -180,7 +180,7 @@ struct spa_fraction {
|
|||
#define SPA_MEMBER(b,o,t) SPA_PTROFF(b,o,t)
|
||||
#define SPA_MEMBER_ALIGN(b,o,a,t) SPA_PTROFF_ALIGN(b,o,a,t)
|
||||
|
||||
#define SPA_CONTAINER_OF(p,t,m) ((t*)((uintptr_t)p - offsetof(t,m)))
|
||||
#define SPA_CONTAINER_OF(p,t,m) ((t*)((uintptr_t)(p) - offsetof(t,m)))
|
||||
|
||||
#define SPA_PTRDIFF(p1,p2) ((intptr_t)(p1) - (intptr_t)(p2))
|
||||
|
||||
|
|
@ -194,7 +194,7 @@ struct spa_fraction {
|
|||
#define SPA_IDX_INVALID ((unsigned int)-1)
|
||||
#define SPA_ID_INVALID ((uint32_t)0xffffffff)
|
||||
|
||||
#define SPA_NSEC_PER_SEC (1000000000ll)
|
||||
#define SPA_NSEC_PER_SEC (1000000000LL)
|
||||
#define SPA_NSEC_PER_MSEC (1000000ll)
|
||||
#define SPA_NSEC_PER_USEC (1000ll)
|
||||
#define SPA_USEC_PER_SEC (1000000ll)
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ struct spa_dict_item {
|
|||
const char *value;
|
||||
};
|
||||
|
||||
#define SPA_DICT_ITEM_INIT(key,value) (struct spa_dict_item) { key, value }
|
||||
#define SPA_DICT_ITEM_INIT(key,value) ((struct spa_dict_item) { (key), (value) })
|
||||
|
||||
struct spa_dict {
|
||||
#define SPA_DICT_FLAG_SORTED (1<<0) /**< items are sorted */
|
||||
|
|
@ -57,8 +57,8 @@ struct spa_dict {
|
|||
const struct spa_dict_item *items;
|
||||
};
|
||||
|
||||
#define SPA_DICT_INIT(items,n_items) (struct spa_dict) { 0, n_items, items }
|
||||
#define SPA_DICT_INIT_ARRAY(items) (struct spa_dict) { 0, SPA_N_ELEMENTS(items), items }
|
||||
#define SPA_DICT_INIT(items,n_items) ((struct spa_dict) { 0, (n_items), (items) })
|
||||
#define SPA_DICT_INIT_ARRAY(items) ((struct spa_dict) { 0, SPA_N_ELEMENTS(items), (items) })
|
||||
|
||||
#define spa_dict_for_each(item, dict) \
|
||||
for ((item) = (dict)->items; \
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ struct spa_callbacks {
|
|||
* Initialize the set of functions \a funcs as a \ref spa_callbacks, together
|
||||
* with \a _data.
|
||||
*/
|
||||
#define SPA_CALLBACKS_INIT(_funcs,_data) (struct spa_callbacks){ _funcs, _data, }
|
||||
#define SPA_CALLBACKS_INIT(_funcs,_data) ((struct spa_callbacks){ (_funcs), (_data), })
|
||||
|
||||
/** \struct spa_interface
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -58,20 +58,20 @@ struct spa_json {
|
|||
uint32_t depth;
|
||||
};
|
||||
|
||||
#define SPA_JSON_INIT(data,size) (struct spa_json) { (data), (data)+(size), }
|
||||
#define SPA_JSON_INIT(data,size) ((struct spa_json) { (data), (data)+(size), })
|
||||
|
||||
static inline void spa_json_init(struct spa_json * iter, const char *data, size_t size)
|
||||
{
|
||||
*iter = SPA_JSON_INIT(data, size);
|
||||
}
|
||||
#define SPA_JSON_ENTER(iter) (struct spa_json) { (iter)->cur, (iter)->end, (iter), }
|
||||
#define SPA_JSON_ENTER(iter) ((struct spa_json) { (iter)->cur, (iter)->end, (iter), })
|
||||
|
||||
static inline void spa_json_enter(struct spa_json * iter, struct spa_json * sub)
|
||||
{
|
||||
*sub = SPA_JSON_ENTER(iter);
|
||||
}
|
||||
|
||||
#define SPA_JSON_SAVE(iter) (struct spa_json) { (iter)->cur, (iter)->end, }
|
||||
#define SPA_JSON_SAVE(iter) ((struct spa_json) { (iter)->cur, (iter)->end, })
|
||||
|
||||
/** Get the next token. \a value points to the token and the return value
|
||||
* is the length. */
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ struct spa_list {
|
|||
struct spa_list *prev;
|
||||
};
|
||||
|
||||
#define SPA_LIST_INIT(list) (struct spa_list){ list, list }
|
||||
#define SPA_LIST_INIT(list) ((struct spa_list){ (list), (list) })
|
||||
|
||||
static inline void spa_list_init(struct spa_list *list)
|
||||
{
|
||||
|
|
@ -98,25 +98,25 @@ static inline void spa_list_remove(struct spa_list *elem)
|
|||
(&(pos)->member == (head))
|
||||
|
||||
#define spa_list_next(pos, member) \
|
||||
SPA_CONTAINER_OF((pos)->member.next, __typeof__(*pos), member)
|
||||
SPA_CONTAINER_OF((pos)->member.next, __typeof__(*(pos)), member)
|
||||
|
||||
#define spa_list_prev(pos, member) \
|
||||
SPA_CONTAINER_OF((pos)->member.prev, __typeof__(*pos), member)
|
||||
SPA_CONTAINER_OF((pos)->member.prev, __typeof__(*(pos)), member)
|
||||
|
||||
#define spa_list_consume(pos, head, member) \
|
||||
for (pos = spa_list_first(head, __typeof__(*pos), member); \
|
||||
for ((pos) = spa_list_first(head, __typeof__(*(pos)), member); \
|
||||
!spa_list_is_empty(head); \
|
||||
pos = spa_list_first(head, __typeof__(*pos), member))
|
||||
(pos) = spa_list_first(head, __typeof__(*(pos)), member))
|
||||
|
||||
#define spa_list_for_each_next(pos, head, curr, member) \
|
||||
for (pos = spa_list_first(curr, __typeof__(*pos), member); \
|
||||
for ((pos) = spa_list_first(curr, __typeof__(*(pos)), member); \
|
||||
!spa_list_is_end(pos, head, member); \
|
||||
pos = spa_list_next(pos, member))
|
||||
(pos) = spa_list_next(pos, member))
|
||||
|
||||
#define spa_list_for_each_prev(pos, head, curr, member) \
|
||||
for (pos = spa_list_last(curr, __typeof__(*pos), member); \
|
||||
for ((pos) = spa_list_last(curr, __typeof__(*(pos)), member); \
|
||||
!spa_list_is_end(pos, head, member); \
|
||||
pos = spa_list_prev(pos, member))
|
||||
(pos) = spa_list_prev(pos, member))
|
||||
|
||||
#define spa_list_for_each(pos, head, member) \
|
||||
spa_list_for_each_next(pos, head, head, member)
|
||||
|
|
@ -125,16 +125,16 @@ static inline void spa_list_remove(struct spa_list *elem)
|
|||
spa_list_for_each_prev(pos, head, head, member)
|
||||
|
||||
#define spa_list_for_each_safe_next(pos, tmp, head, curr, member) \
|
||||
for (pos = spa_list_first(curr, __typeof__(*pos), member); \
|
||||
tmp = spa_list_next(pos, member), \
|
||||
for ((pos) = spa_list_first(curr, __typeof__(*(pos)), member); \
|
||||
(tmp) = spa_list_next(pos, member), \
|
||||
!spa_list_is_end(pos, head, member); \
|
||||
pos = tmp)
|
||||
(pos) = (tmp))
|
||||
|
||||
#define spa_list_for_each_safe_prev(pos, tmp, head, curr, member) \
|
||||
for (pos = spa_list_last(curr, __typeof__(*pos), member); \
|
||||
tmp = spa_list_prev(pos, member), \
|
||||
for ((pos) = spa_list_last(curr, __typeof__(*(pos)), member); \
|
||||
(tmp) = spa_list_prev(pos, member), \
|
||||
!spa_list_is_end(pos, head, member); \
|
||||
pos = tmp)
|
||||
(pos) = (tmp))
|
||||
|
||||
#define spa_list_for_each_safe(pos, tmp, head, member) \
|
||||
spa_list_for_each_safe_next(pos, tmp, head, head, member)
|
||||
|
|
@ -146,11 +146,11 @@ static inline void spa_list_remove(struct spa_list *elem)
|
|||
spa_list_prepend(head, &(cursor).member)
|
||||
|
||||
#define spa_list_for_each_cursor(pos, cursor, head, member) \
|
||||
for(pos = spa_list_first(&(cursor).member, __typeof__(*(pos)), member); \
|
||||
for((pos) = spa_list_first(&(cursor).member, __typeof__(*(pos)), member); \
|
||||
spa_list_remove(&(pos)->member), \
|
||||
spa_list_append(&(cursor).member, &(pos)->member), \
|
||||
!spa_list_is_end(pos, head, member); \
|
||||
pos = spa_list_next(&cursor, member))
|
||||
(pos) = spa_list_next(&(cursor), member))
|
||||
|
||||
#define spa_list_cursor_end(cursor, member) \
|
||||
spa_list_remove(&(cursor).member)
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ extern "C" {
|
|||
|
||||
#define spa_strerror(err) \
|
||||
({ \
|
||||
int _err = -err; \
|
||||
int _err = -(err); \
|
||||
if (SPA_RESULT_IS_ASYNC(err)) \
|
||||
_err = EINPROGRESS; \
|
||||
strerror(_err); \
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ struct spa_ringbuffer {
|
|||
uint32_t writeindex; /*< the current write index */
|
||||
};
|
||||
|
||||
#define SPA_RINGBUFFER_INIT() (struct spa_ringbuffer) { 0, 0 }
|
||||
#define SPA_RINGBUFFER_INIT() ((struct spa_ringbuffer) { 0, 0 })
|
||||
|
||||
/**
|
||||
* Initialize a spa_ringbuffer with \a size.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue