25.10.2014 03:21, Peter Meerwald wrote:
From: Peter Meerwald <[email protected]>
Signed-off-by: Peter Meerwald <[email protected]>
---
src/pulsecore/packet.c | 9 +++++++++
src/pulsecore/packet.h | 4 ++++
src/pulsecore/pstream-util.c | 2 +-
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/src/pulsecore/packet.c b/src/pulsecore/packet.c
index 091cfb3..2f8eacf 100644
--- a/src/pulsecore/packet.c
+++ b/src/pulsecore/packet.c
@@ -62,6 +62,15 @@ pa_packet* pa_packet_new(size_t length) {
return p;
}
+pa_packet* pa_packet_new_data(const void* data, size_t length) {
+ pa_packet *p = pa_packet_new(length);
+
+ if (p && data)
+ memcpy(p->data, data, length);
p cannot be NULL here, so part of the check is pointless.
The only caller is also known to pass non-null data. So please either
delete the if or turn it into pa_assert(data).
+
+ return p;
+}
+
pa_packet* pa_packet_new_dynamic(void* data, size_t length) {
pa_packet *p;
diff --git a/src/pulsecore/packet.h b/src/pulsecore/packet.h
index 33c66f2..f36eb11 100644
--- a/src/pulsecore/packet.h
+++ b/src/pulsecore/packet.h
@@ -31,6 +31,10 @@ typedef struct pa_packet pa_packet;
* on length) */
pa_packet* pa_packet_new(size_t length);
+/* create packet (either of type appended or dynamic depending on length)
+ * and copy data */
+pa_packet* pa_packet_new_data(const void* data, size_t length);
+
/* data must have been malloc()ed; the packet takes ownership of the memory,
* i.e. memory is free()d with the packet */
pa_packet* pa_packet_new_dynamic(void* data, size_t length);
diff --git a/src/pulsecore/pstream-util.c b/src/pulsecore/pstream-util.c
index b029482..8312cc5 100644
--- a/src/pulsecore/pstream-util.c
+++ b/src/pulsecore/pstream-util.c
@@ -38,7 +38,7 @@ static void pa_pstream_send_tagstruct_with_ancil(pa_pstream
*p, pa_tagstruct *t,
pa_assert(t);
pa_assert_se(data = pa_tagstruct_data(t, &length));
- pa_assert_se(packet = pa_packet_new_dynamic(pa_xmemdup(data, length),
length));
+ pa_assert_se(packet = pa_packet_new_data(data, length));
pa_tagstruct_free(t);
pa_pstream_send_packet(p, packet, ancil);
--
Alexander E. Patrakov
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss