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:
Demi Marie Obenour 2022-09-01 17:02:44 -04:00
parent bb4f274ae0
commit 671a7102ff
46 changed files with 162 additions and 156 deletions

View file

@ -140,9 +140,9 @@ struct pw_client_node0_message_port_reuse_buffer {
#define PW_CLIENT_NODE0_MESSAGE_TYPE(message) (((struct pw_client_node0_message*)(message))->body.type.value)
#define PW_CLIENT_NODE0_MESSAGE_INIT(message) (struct pw_client_node0_message) \
#define PW_CLIENT_NODE0_MESSAGE_INIT(message) ((struct pw_client_node0_message) \
{ { { sizeof(struct pw_client_node0_message_body), SPA_TYPE_Struct } }, \
{ SPA_POD_INIT_Int(message) } }
{ SPA_POD_INIT_Int(message) } })
#define PW_CLIENT_NODE0_MESSAGE_INIT_FULL(type,size,message,...) (type) \
{ { { size, SPA_TYPE_Struct } }, \

View file

@ -45,7 +45,7 @@ struct footer_builder {
unsigned int started:1;
};
#define FOOTER_BUILDER_INIT(builder) (struct footer_builder) { builder }
#define FOOTER_BUILDER_INIT(builder) ((struct footer_builder) { (builder) })
static void start_footer_entry(struct footer_builder *fb, uint32_t opcode)
{

View file

@ -219,13 +219,13 @@ do { \
spa_pod_parser_get(prs, \
SPA_POD_Int(&(n_params)), NULL) < 0) \
return -EINVAL; \
params = NULL; \
if (n_params > 0) { \
(params) = NULL; \
if ((n_params) > 0) { \
uint32_t i; \
if (n_params > MAX_PARAM_INFO) \
if ((n_params) > MAX_PARAM_INFO) \
return -ENOSPC; \
params = alloca(n_params * sizeof(struct spa_param_info)); \
for (i = 0; i < n_params; i++) { \
(params) = alloca((n_params) * sizeof(struct spa_param_info)); \
for (i = 0; i < (n_params); i++) { \
if (spa_pod_parser_get(prs, \
SPA_POD_Id(&(params)[i].id), \
SPA_POD_Int(&(params)[i].flags), NULL) < 0) \
@ -240,18 +240,18 @@ do { \
do { \
if (spa_pod_parser_push_struct(prs, f) < 0 || \
spa_pod_parser_get(prs, \
SPA_POD_Int(&n_permissions), NULL) < 0) \
SPA_POD_Int(&(n_permissions)), NULL) < 0) \
return -EINVAL; \
permissions = NULL; \
if (n_permissions > 0) { \
(permissions) = NULL; \
if ((n_permissions) > 0) { \
uint32_t i; \
if (n_permissions > MAX_PERMISSIONS) \
if ((n_permissions) > MAX_PERMISSIONS) \
return -ENOSPC; \
permissions = alloca(n_permissions * sizeof(struct pw_permission)); \
for (i = 0; i < n_permissions; i++) { \
(permissions) = alloca((n_permissions) * sizeof(struct pw_permission)); \
for (i = 0; i < (n_permissions); i++) { \
if (spa_pod_parser_get(prs, \
SPA_POD_Int(&permissions[i].id), \
SPA_POD_Int(&permissions[i].permissions), NULL) < 0) \
SPA_POD_Int(&(permissions)[i].id), \
SPA_POD_Int(&(permissions)[i].permissions), NULL) < 0) \
return -EINVAL; \
} \
} \

View file

@ -415,7 +415,7 @@ struct spa_pod_prop_body0 {
(iter) <= SPA_PTROFF((body), (_size)-(body)->value.size, __typeof__(*iter)); \
(iter) = SPA_PTROFF((iter), (body)->value.size, __typeof__(*iter)))
#define SPA0_POD_PROP_N_VALUES(b,size) ((size - sizeof(struct spa_pod_prop_body0)) / (b)->value.size)
#define SPA0_POD_PROP_N_VALUES(b,size) (((size) - sizeof(struct spa_pod_prop_body0)) / (b)->value.size)
static int remap_from_v2(uint32_t type, void *body, uint32_t size, struct pw_impl_client *client,
struct spa_pod_builder *builder)

View file

@ -35,13 +35,13 @@
#define MAX_PARAMS 32
#define manager_emit_sync(m) spa_hook_list_call(&m->hooks, struct pw_manager_events, sync, 0)
#define manager_emit_added(m,o) spa_hook_list_call(&m->hooks, struct pw_manager_events, added, 0, o)
#define manager_emit_updated(m,o) spa_hook_list_call(&m->hooks, struct pw_manager_events, updated, 0, o)
#define manager_emit_removed(m,o) spa_hook_list_call(&m->hooks, struct pw_manager_events, removed, 0, o)
#define manager_emit_metadata(m,o,s,k,t,v) spa_hook_list_call(&m->hooks, struct pw_manager_events, metadata,0,o,s,k,t,v)
#define manager_emit_disconnect(m) spa_hook_list_call(&m->hooks, struct pw_manager_events, disconnect, 0)
#define manager_emit_object_data_timeout(m,o,k) spa_hook_list_call(&m->hooks, struct pw_manager_events, object_data_timeout,0,o,k)
#define manager_emit_sync(m) spa_hook_list_call(&(m)->hooks, struct pw_manager_events, sync, 0)
#define manager_emit_added(m,o) spa_hook_list_call(&(m)->hooks, struct pw_manager_events, added, 0, o)
#define manager_emit_updated(m,o) spa_hook_list_call(&(m)->hooks, struct pw_manager_events, updated, 0, o)
#define manager_emit_removed(m,o) spa_hook_list_call(&(m)->hooks, struct pw_manager_events, removed, 0, o)
#define manager_emit_metadata(m,o,s,k,t,v) spa_hook_list_call(&(m)->hooks, struct pw_manager_events, metadata,0,o,s,k,t,v)
#define manager_emit_disconnect(m) spa_hook_list_call(&(m)->hooks, struct pw_manager_events, disconnect, 0)
#define manager_emit_object_data_timeout(m,o,k) spa_hook_list_call(&(m)->hooks, struct pw_manager_events, object_data_timeout,0,o,k)
struct object;

View file

@ -113,7 +113,7 @@ struct tunnel_info {
const char *domain;
};
#define TUNNEL_INFO(...) (struct tunnel_info){ __VA_ARGS__ }
#define TUNNEL_INFO(...) ((struct tunnel_info){ __VA_ARGS__ })
struct tunnel {
struct spa_list link;

View file

@ -109,7 +109,7 @@ struct tunnel_info {
const char *domain;
};
#define TUNNEL_INFO(...) (struct tunnel_info){ __VA_ARGS__ }
#define TUNNEL_INFO(...) ((struct tunnel_info){ __VA_ARGS__ })
struct tunnel {
struct spa_list link;