Insure proper initialization of stack-allocated struct.

Version 1.0.0 of the libao library added a new field to the
ao_sample_format struct.  It is a char * named matrix.  When
an ao_sample_format is allocated on the stack, this field contains
garbage.  The proper course is to insure that is initialized to NULL.
NULL indicates that we do not want any mapping.
The struct is now initialized using a static initializer, and this
technique is compatible with all known versions of libao.
This commit is contained in:
Christopher Brannon 2011-02-13 01:37:28 +00:00 committed by Max Kellermann
parent 03018611f8
commit 2a1f4539f6
2 changed files with 6 additions and 1 deletions

2
NEWS
View File

@ -1,4 +1,6 @@
ver 0.15.16 (2010/??/??) ver 0.15.16 (2010/??/??)
* output:
- ao: initialize the ao_sample_format struct
* encoders: * encoders:
- lame: explicitly configure the output sample rate - lame: explicitly configure the output sample rate
* update: log all file permission problems * update: log all file permission problems

View File

@ -25,6 +25,9 @@
#undef G_LOG_DOMAIN #undef G_LOG_DOMAIN
#define G_LOG_DOMAIN "ao" #define G_LOG_DOMAIN "ao"
/* An ao_sample_format, with all fields set to zero: */
static const ao_sample_format OUR_AO_FORMAT_INITIALIZER;
static unsigned ao_output_ref; static unsigned ao_output_ref;
struct ao_data { struct ao_data {
@ -166,7 +169,7 @@ static bool
ao_output_open(void *data, struct audio_format *audio_format, ao_output_open(void *data, struct audio_format *audio_format,
GError **error) GError **error)
{ {
ao_sample_format format; ao_sample_format format = OUR_AO_FORMAT_INITIALIZER;
struct ao_data *ad = (struct ao_data *)data; struct ao_data *ad = (struct ao_data *)data;
/* support for 24 bit samples in libao is currently dubious, /* support for 24 bit samples in libao is currently dubious,