From 058d91940d3cc131a6cf222cd79fe5c5e38c9dbd Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Mon, 7 Feb 2011 17:00:21 +0100 Subject: [PATCH] oggdec: Use local variable for the vorbis file struct. This way, the read callback knows whether we are about to open the file or not. --- oggdec_filter.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/oggdec_filter.c b/oggdec_filter.c index 67cbf97e..94c284a7 100644 --- a/oggdec_filter.c +++ b/oggdec_filter.c @@ -129,12 +129,12 @@ static int ogg_init(struct filter_node *fn) struct btr_node *btrn = fn->btrn; int ret, oret; size_t iqs; + struct OggVorbis_File *vf = para_malloc(sizeof(*vf)); - pod->vf = para_malloc(sizeof(struct OggVorbis_File)); PARA_NOTICE_LOG("iqs: %zu, min_iqs: %zu, opening ov callbacks\n", btr_get_input_queue_size(btrn), fn->min_iqs); open: - oret = ov_open_callbacks(fn, pod->vf, + oret = ov_open_callbacks(fn, vf, NULL, /* no initial buffer */ 0, /* no initial bytes */ ovc); /* the ov_open_callbacks */ @@ -164,19 +164,19 @@ open: ret = -E_OGGDEC_FAULT; if (oret < 0) goto out; - pod->channels = ov_info(pod->vf, 0)->channels; - pod->sample_rate = ov_info(pod->vf, 0)->rate; + pod->channels = ov_info(vf, 0)->channels; + pod->sample_rate = ov_info(vf, 0)->rate; PARA_NOTICE_LOG("%d channels, %d Hz\n", pod->channels, pod->sample_rate); ret = 1; out: - if (ret <= 0) { - free(pod->vf); - pod->vf = NULL; - } else { + if (ret <= 0) + free(vf); + else { btr_consume(btrn, pod->converted); pod->converted = 0; fn->min_iqs = 0; + pod->vf = vf; } return ret; } -- 2.39.5