FILE *fid; // file id
FLAC__StreamEncoder* encoder;
FLAC__int32 *buffer;
- FLAC__StreamMetadata *metadata[2];
+ FLAC__StreamMetadata **metadata;
};
typedef struct _aubio_sink_flac_t aubio_sink_flac_t;
goto failure;
}
+ s->metadata = AUBIO_ARRAY(FLAC__StreamMetadata*, 2);
+ if (!s->metadata) {
+ AUBIO_ERR("sink_flac: failed allocating memory for %s\n", s->path);
+ goto failure;
+ }
+
s->metadata[0] = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT);
if (!s->metadata[0]) {
AUBIO_ERR("sink_flac: failed allocating vorbis comment %s\n", s->path);
if (s->metadata) {
// clean up metadata after stream finished
- FLAC__metadata_object_delete(s->metadata[0]);
- FLAC__metadata_object_delete(s->metadata[1]);
+ if (s->metadata[0])
+ FLAC__metadata_object_delete(s->metadata[0]);
+ if (s->metadata[1])
+ FLAC__metadata_object_delete(s->metadata[1]);
+ AUBIO_FREE(s->metadata);
}
if (s->fid && fclose(s->fid)) {