From: Peter Meerwald <p.meerwald@xxxxxxxxxxxxxxxxxx> pa_tagstruct_new() is called either with no data, i.e. (NULL, 0) to create a dynamic tagstruct or with a pointer to fixed data introduce a new function pa_tagstruct_new_fixed() for the latter case Signed-off-by: Peter Meerwald <pmeerw at pmeerw.net> --- src/modules/module-card-restore.c | 4 ++-- src/modules/module-device-manager.c | 8 ++++---- src/modules/module-device-restore.c | 12 ++++++------ src/modules/module-stream-restore.c | 8 ++++---- src/modules/module-tunnel.c | 26 +++++++++++++------------- src/pulse/context.c | 6 +++--- src/pulsecore/pdispatch.c | 2 +- src/pulsecore/protocol-native.c | 34 +++++++++++++++++----------------- src/pulsecore/pstream-util.c | 4 ++-- src/pulsecore/tagstruct.c | 20 ++++++++++++++++---- src/pulsecore/tagstruct.h | 3 ++- 11 files changed, 70 insertions(+), 57 deletions(-) diff --git a/src/modules/module-card-restore.c b/src/modules/module-card-restore.c index 681acca..78a97ba 100644 --- a/src/modules/module-card-restore.c +++ b/src/modules/module-card-restore.c @@ -196,7 +196,7 @@ static bool entry_write(struct userdata *u, const char *name, const struct entry pa_assert(name); pa_assert(e); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu8(t, e->version); pa_tagstruct_puts(t, e->profile); pa_tagstruct_putu32(t, pa_hashmap_size(e->ports)); @@ -274,7 +274,7 @@ static struct entry* entry_read(struct userdata *u, const char *name) { return NULL; } - t = pa_tagstruct_new(data.data, data.size); + t = pa_tagstruct_new_fixed(data.data, data.size); e = entry_new(); if (pa_tagstruct_getu8(t, &e->version) < 0 || diff --git a/src/modules/module-device-manager.c b/src/modules/module-device-manager.c index 9621f3e..a396edc 100644 --- a/src/modules/module-device-manager.c +++ b/src/modules/module-device-manager.c @@ -209,7 +209,7 @@ static bool entry_write(struct userdata *u, const char *name, const struct entry pa_assert(name); pa_assert(e); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu8(t, e->version); pa_tagstruct_puts(t, e->description); pa_tagstruct_put_boolean(t, e->user_set_description); @@ -297,7 +297,7 @@ static struct entry* entry_read(struct userdata *u, const char *name) { if (!pa_database_get(u->database, &key, &data)) goto fail; - t = pa_tagstruct_new(data.data, data.size); + t = pa_tagstruct_new_fixed(data.data, data.size); e = entry_new(); if (pa_tagstruct_getu8(t, &e->version) < 0 || @@ -451,7 +451,7 @@ static void notify_subscribers(struct userdata *u) { PA_IDXSET_FOREACH(c, u->subscribed, idx) { pa_tagstruct *t; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_EXTENSION); pa_tagstruct_putu32(t, 0); pa_tagstruct_putu32(t, u->module->index); @@ -1132,7 +1132,7 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio if (pa_tagstruct_getu32(t, &command) < 0) goto fail; - reply = pa_tagstruct_new(NULL, 0); + reply = pa_tagstruct_new(); pa_tagstruct_putu32(reply, PA_COMMAND_REPLY); pa_tagstruct_putu32(reply, tag); diff --git a/src/modules/module-device-restore.c b/src/modules/module-device-restore.c index cb42207..ad9115e 100644 --- a/src/modules/module-device-restore.c +++ b/src/modules/module-device-restore.c @@ -153,7 +153,7 @@ static void trigger_save(struct userdata *u, pa_device_type_t type, uint32_t sin PA_IDXSET_FOREACH(c, u->subscribed, idx) { pa_tagstruct *t; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_EXTENSION); pa_tagstruct_putu32(t, 0); pa_tagstruct_putu32(t, u->module->index); @@ -202,7 +202,7 @@ static bool entry_write(struct userdata *u, const char *name, const struct entry pa_assert(name); pa_assert(e); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu8(t, e->version); pa_tagstruct_put_boolean(t, e->port_valid); pa_tagstruct_puts(t, e->port); @@ -238,7 +238,7 @@ static struct entry* entry_read(struct userdata *u, const char *name) { return NULL; } - t = pa_tagstruct_new(data.data, data.size); + t = pa_tagstruct_new_fixed(data.data, data.size); e = entry_new(); if (pa_tagstruct_getu8(t, &e->version) < 0 || @@ -373,7 +373,7 @@ static bool perportentry_write(struct userdata *u, const char *basekeyname, cons n_formats = pa_idxset_size(e->formats); pa_assert(n_formats > 0); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu8(t, e->version); pa_tagstruct_put_boolean(t, e->volume_valid); pa_tagstruct_put_channel_map(t, &e->channel_map); @@ -419,7 +419,7 @@ static struct perportentry* perportentry_read(struct userdata *u, const char *ba if (!pa_database_get(u->database, &key, &data)) goto fail; - t = pa_tagstruct_new(data.data, data.size); + t = pa_tagstruct_new_fixed(data.data, data.size); e = perportentry_new(false); if (pa_tagstruct_getu8(t, &e->version) < 0 || @@ -1042,7 +1042,7 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio if (pa_tagstruct_getu32(t, &command) < 0) goto fail; - reply = pa_tagstruct_new(NULL, 0); + reply = pa_tagstruct_new(); pa_tagstruct_putu32(reply, PA_COMMAND_REPLY); pa_tagstruct_putu32(reply, tag); diff --git a/src/modules/module-stream-restore.c b/src/modules/module-stream-restore.c index 06ab543..a625d60 100644 --- a/src/modules/module-stream-restore.c +++ b/src/modules/module-stream-restore.c @@ -994,7 +994,7 @@ static bool entry_write(struct userdata *u, const char *name, const struct entry pa_assert(name); pa_assert(e); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu8(t, e->version); pa_tagstruct_put_boolean(t, e->volume_valid); pa_tagstruct_put_channel_map(t, &e->channel_map); @@ -1126,7 +1126,7 @@ static struct entry *entry_read(struct userdata *u, const char *name) { if (!pa_database_get(u->database, &key, &data)) goto fail; - t = pa_tagstruct_new(data.data, data.size); + t = pa_tagstruct_new_fixed(data.data, data.size); e = entry_new(); if (pa_tagstruct_getu8(t, &e->version) < 0 || @@ -1203,7 +1203,7 @@ static void trigger_save(struct userdata *u) { PA_IDXSET_FOREACH(c, u->subscribed, idx) { pa_tagstruct *t; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_EXTENSION); pa_tagstruct_putu32(t, 0); pa_tagstruct_putu32(t, u->module->index); @@ -2018,7 +2018,7 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio if (pa_tagstruct_getu32(t, &command) < 0) goto fail; - reply = pa_tagstruct_new(NULL, 0); + reply = pa_tagstruct_new(); pa_tagstruct_putu32(reply, PA_COMMAND_REPLY); pa_tagstruct_putu32(reply, tag); diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c index cfbcd1a..65e10ab 100644 --- a/src/modules/module-tunnel.c +++ b/src/modules/module-tunnel.c @@ -449,7 +449,7 @@ static void stream_cork(struct userdata *u, bool cork) { if (!u->pstream) return; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); #ifdef TUNNEL_SINK pa_tagstruct_putu32(t, PA_COMMAND_CORK_PLAYBACK_STREAM); #else @@ -882,7 +882,7 @@ static void request_latency(struct userdata *u) { uint32_t tag; pa_assert(u); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); #ifdef TUNNEL_SINK pa_tagstruct_putu32(t, PA_COMMAND_GET_PLAYBACK_LATENCY); #else @@ -944,7 +944,7 @@ static void update_description(struct userdata *u) { pa_get_user_name(un, sizeof(un)), pa_get_host_name(hn, sizeof(hn))); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); #ifdef TUNNEL_SINK pa_tagstruct_putu32(t, PA_COMMAND_SET_PLAYBACK_STREAM_NAME); #else @@ -1364,14 +1364,14 @@ static void request_info(struct userdata *u) { uint32_t tag; pa_assert(u); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_GET_SERVER_INFO); pa_tagstruct_putu32(t, tag = u->ctag++); pa_pstream_send_tagstruct(u->pstream, t); pa_pdispatch_register_reply(u->pdispatch, tag, DEFAULT_TIMEOUT, server_info_cb, u, NULL); #ifdef TUNNEL_SINK - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_GET_SINK_INPUT_INFO); pa_tagstruct_putu32(t, tag = u->ctag++); pa_tagstruct_putu32(t, u->device_index); @@ -1379,7 +1379,7 @@ static void request_info(struct userdata *u) { pa_pdispatch_register_reply(u->pdispatch, tag, DEFAULT_TIMEOUT, sink_input_info_cb, u, NULL); if (u->sink_name) { - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_GET_SINK_INFO); pa_tagstruct_putu32(t, tag = u->ctag++); pa_tagstruct_putu32(t, PA_INVALID_INDEX); @@ -1389,7 +1389,7 @@ static void request_info(struct userdata *u) { } #else if (u->source_name) { - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_GET_SOURCE_INFO); pa_tagstruct_putu32(t, tag = u->ctag++); pa_tagstruct_putu32(t, PA_INVALID_INDEX); @@ -1436,7 +1436,7 @@ static void start_subscribe(struct userdata *u) { pa_tagstruct *t; pa_assert(u); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_SUBSCRIBE); pa_tagstruct_putu32(t, u->ctag++); pa_tagstruct_putu32(t, PA_SUBSCRIPTION_MASK_SERVER| @@ -1621,7 +1621,7 @@ static void setup_complete_callback(pa_pdispatch *pd, uint32_t command, uint32_t pa_get_host_name(hn, sizeof(hn))); #endif - reply = pa_tagstruct_new(NULL, 0); + reply = pa_tagstruct_new(); pa_tagstruct_putu32(reply, PA_COMMAND_SET_CLIENT_NAME); pa_tagstruct_putu32(reply, u->ctag++); @@ -1639,7 +1639,7 @@ static void setup_complete_callback(pa_pdispatch *pd, uint32_t command, uint32_t pa_pstream_send_tagstruct(u->pstream, reply); /* We ignore the server's reply here */ - reply = pa_tagstruct_new(NULL, 0); + reply = pa_tagstruct_new(); if (u->version < 13) /* Only for older PA versions we need to fill in the maxlength */ @@ -1843,7 +1843,7 @@ static void on_connection(pa_socket_client *sc, pa_iochannel *io, void *userdata pa_pstream_set_receive_memblock_callback(u->pstream, pstream_memblock_callback, u); #endif - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_AUTH); pa_tagstruct_putu32(t, tag = u->ctag++); pa_tagstruct_putu32(t, PA_PROTOCOL_VERSION); @@ -1882,7 +1882,7 @@ static void sink_set_volume(pa_sink *sink) { u = sink->userdata; pa_assert(u); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_SET_SINK_INPUT_VOLUME); pa_tagstruct_putu32(t, u->ctag++); pa_tagstruct_putu32(t, u->device_index); @@ -1902,7 +1902,7 @@ static void sink_set_mute(pa_sink *sink) { if (u->version < 11) return; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_SET_SINK_INPUT_MUTE); pa_tagstruct_putu32(t, u->ctag++); pa_tagstruct_putu32(t, u->device_index); diff --git a/src/pulse/context.c b/src/pulse/context.c index d5da9b8..ce513d0 100644 --- a/src/pulse/context.c +++ b/src/pulse/context.c @@ -371,7 +371,7 @@ static void handle_srbchannel_memblock(pa_context *c, pa_memblock *memblock) { } /* Ack the enable command */ - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_ENABLE_SRBCHANNEL); pa_tagstruct_putu32(t, c->srb_setup_tag); pa_pstream_send_tagstruct(c->pstream, t); @@ -1302,7 +1302,7 @@ pa_tagstruct *pa_tagstruct_command(pa_context *c, uint32_t command, uint32_t *ta pa_assert(c); pa_assert(tag); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, command); pa_tagstruct_putu32(t, *tag = c->ctag++); @@ -1476,7 +1476,7 @@ static void pa_command_disable_srbchannel(pa_pdispatch *pd, uint32_t command, ui } /* Send disable command back again */ - t2 = pa_tagstruct_new(NULL, 0); + t2 = pa_tagstruct_new(); pa_tagstruct_putu32(t2, PA_COMMAND_DISABLE_SRBCHANNEL); pa_tagstruct_putu32(t2, tag); pa_pstream_send_tagstruct(c->pstream, t2); diff --git a/src/pulsecore/pdispatch.c b/src/pulsecore/pdispatch.c index 53284ee..59e48d6 100644 --- a/src/pulsecore/pdispatch.c +++ b/src/pulsecore/pdispatch.c @@ -307,7 +307,7 @@ int pa_pdispatch_run(pa_pdispatch *pd, pa_packet *packet, const pa_cmsg_ancil_da if (packet->length <= 8) goto finish; - ts = pa_tagstruct_new(packet->data, packet->length); + ts = pa_tagstruct_new_fixed(packet->data, packet->length); if (pa_tagstruct_getu32(ts, &command) < 0 || pa_tagstruct_getu32(ts, &tag) < 0) diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c index c0cd0e0..ae8982d 100644 --- a/src/pulsecore/protocol-native.c +++ b/src/pulsecore/protocol-native.c @@ -759,7 +759,7 @@ static void record_stream_send_killed(record_stream *r) { pa_tagstruct *t; record_stream_assert_ref(r); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_RECORD_STREAM_KILLED); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, r->index); @@ -820,7 +820,7 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata, break; } - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_REQUEST); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, s->index); @@ -841,7 +841,7 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata, #endif /* Report that we're empty */ - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_UNDERFLOW); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, s->index); @@ -855,7 +855,7 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata, pa_tagstruct *t; /* Notify the user we're overflowed*/ - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_OVERFLOW); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, s->index); @@ -869,7 +869,7 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata, pa_tagstruct *t; /* Notify the user we started playback */ - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_STARTED); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, s->index); @@ -889,7 +889,7 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata, if (s->connection->version >= 15) { pa_tagstruct *t; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, s->index); @@ -1287,7 +1287,7 @@ static void playback_stream_send_killed(playback_stream *p) { pa_tagstruct *t; playback_stream_assert_ref(p); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_STREAM_KILLED); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, p->index); @@ -1749,7 +1749,7 @@ static void sink_input_send_event_cb(pa_sink_input *i, const char *event, pa_pro if (s->connection->version < 15) return; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_STREAM_EVENT); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, s->index); @@ -1770,7 +1770,7 @@ static void sink_input_suspend_cb(pa_sink_input *i, bool suspend) { if (s->connection->version < 12) return; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_STREAM_SUSPENDED); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, s->index); @@ -1797,7 +1797,7 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) { if (s->connection->version < 12) return; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_PLAYBACK_STREAM_MOVED); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, s->index); @@ -1887,7 +1887,7 @@ static void source_output_send_event_cb(pa_source_output *o, const char *event, if (s->connection->version < 15) return; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_RECORD_STREAM_EVENT); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, s->index); @@ -1908,7 +1908,7 @@ static void source_output_suspend_cb(pa_source_output *o, bool suspend) { if (s->connection->version < 12) return; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_RECORD_STREAM_SUSPENDED); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, s->index); @@ -1936,7 +1936,7 @@ static void source_output_moving_cb(pa_source_output *o, pa_source *dest) { if (s->connection->version < 12) return; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_RECORD_STREAM_MOVED); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_putu32(t, s->index); @@ -1977,7 +1977,7 @@ if (!(expression)) { \ static pa_tagstruct *reply_new(uint32_t tag) { pa_tagstruct *reply; - reply = pa_tagstruct_new(NULL, 0); + reply = pa_tagstruct_new(); pa_tagstruct_putu32(reply, PA_COMMAND_REPLY); pa_tagstruct_putu32(reply, tag); return reply; @@ -2621,7 +2621,7 @@ static void setup_srbchannel(pa_native_connection *c) { pa_srbchannel_export(srb, &srbt); /* Send enable command to client */ - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_ENABLE_SRBCHANNEL); pa_tagstruct_putu32(t, (size_t) srb); /* tag */ fdlist[0] = srbt.readfd; @@ -3746,7 +3746,7 @@ static void subscription_cb(pa_core *core, pa_subscription_event_type_t e, uint3 pa_native_connection_assert_ref(c); - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_SUBSCRIBE_EVENT); pa_tagstruct_putu32(t, (uint32_t) -1); pa_tagstruct_putu32(t, e); @@ -5039,7 +5039,7 @@ static void client_send_event_cb(pa_client *client, const char*event, pa_proplis if (c->version < 15) return; - t = pa_tagstruct_new(NULL, 0); + t = pa_tagstruct_new(); pa_tagstruct_putu32(t, PA_COMMAND_CLIENT_EVENT); pa_tagstruct_putu32(t, (uint32_t) -1); /* tag */ pa_tagstruct_puts(t, event); diff --git a/src/pulsecore/pstream-util.c b/src/pulsecore/pstream-util.c index 9ccd5a4..19d7e49 100644 --- a/src/pulsecore/pstream-util.c +++ b/src/pulsecore/pstream-util.c @@ -86,7 +86,7 @@ void pa_pstream_send_tagstruct_with_fds(pa_pstream *p, pa_tagstruct *t, int nfd, void pa_pstream_send_error(pa_pstream *p, uint32_t tag, uint32_t error) { pa_tagstruct *t; - pa_assert_se(t = pa_tagstruct_new(NULL, 0)); + pa_assert_se(t = pa_tagstruct_new()); pa_tagstruct_putu32(t, PA_COMMAND_ERROR); pa_tagstruct_putu32(t, tag); pa_tagstruct_putu32(t, error); @@ -96,7 +96,7 @@ void pa_pstream_send_error(pa_pstream *p, uint32_t tag, uint32_t error) { void pa_pstream_send_simple_ack(pa_pstream *p, uint32_t tag) { pa_tagstruct *t; - pa_assert_se(t = pa_tagstruct_new(NULL, 0)); + pa_assert_se(t = pa_tagstruct_new()); pa_tagstruct_putu32(t, PA_COMMAND_REPLY); pa_tagstruct_putu32(t, tag); pa_pstream_send_tagstruct(p, t); diff --git a/src/pulsecore/tagstruct.c b/src/pulsecore/tagstruct.c index e51fcf2..c74a9ab 100644 --- a/src/pulsecore/tagstruct.c +++ b/src/pulsecore/tagstruct.c @@ -50,16 +50,28 @@ struct pa_tagstruct { bool dynamic; }; -pa_tagstruct *pa_tagstruct_new(const uint8_t* data, size_t length) { +pa_tagstruct *pa_tagstruct_new(void) { pa_tagstruct*t; - pa_assert(!data || (data && length)); + t = pa_xnew(pa_tagstruct, 1); + t->data = NULL; + t->allocated = t->length = 0; + t->rindex = 0; + t->dynamic = true; + + return t; +} + +pa_tagstruct *pa_tagstruct_new_fixed(const uint8_t* data, size_t length) { + pa_tagstruct*t; + + pa_assert(data && length); t = pa_xnew(pa_tagstruct, 1); t->data = (uint8_t*) data; - t->allocated = t->length = data ? length : 0; + t->allocated = t->length = length; t->rindex = 0; - t->dynamic = !data; + t->dynamic = false; return t; } diff --git a/src/pulsecore/tagstruct.h b/src/pulsecore/tagstruct.h index 9fef255..860332d 100644 --- a/src/pulsecore/tagstruct.h +++ b/src/pulsecore/tagstruct.h @@ -62,7 +62,8 @@ enum { PA_TAG_FORMAT_INFO = 'f', }; -pa_tagstruct *pa_tagstruct_new(const uint8_t* data, size_t length); +pa_tagstruct *pa_tagstruct_new(void); +pa_tagstruct *pa_tagstruct_new_fixed(const uint8_t* data, size_t length); void pa_tagstruct_free(pa_tagstruct*t); uint8_t* pa_tagstruct_free_data(pa_tagstruct*t, size_t *l); -- 1.9.1