25.10.2014 03:21, Peter Meerwald wrote: > From: Peter Meerwald <p.meerwald at bct-electronic.com> > > Signed-off-by: Peter Meerwald <pmeerw at pmeerw.net> > --- > 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