libavcodec/vp8.c:1668: error: Uninitialized Value
  The value read from curframe was never initialized.

libavcodec/vp8.c:1668:5: 
1666.     int ret, mb_y, i, referenced;
1667.     enum AVDiscard skip_thresh;
1668.     AVFrame *av_uninit(curframe), *prev_frame;
          ^
1669. 
1670.     release_queued_segmaps(s, 0);

static int vp8_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
                            AVPacket *avpkt)
{
    VP8Context *s = avctx->priv_data;
    int ret, mb_y, i, referenced;
    enum AVDiscard skip_thresh;
    AVFrame *av_uninit(curframe), *prev_frame;
    release_queued_segmaps(s, 0);
    if ((ret = decode_frame_header(s, avpkt->data, avpkt->size)) < 0)
        goto err;
    prev_frame = s->framep[VP56_FRAME_CURRENT];
    referenced = s->update_last || s->update_golden == VP56_FRAME_CURRENT
                                || s->update_altref == VP56_FRAME_CURRENT;
    skip_thresh = !referenced ? AVDISCARD_NONREF :
                    !s->keyframe ? AVDISCARD_NONKEY : AVDISCARD_ALL;
    if (avctx->skip_frame >= skip_thresh) {
        s->invisible = 1;
        memcpy(&s->next_framep[0], &s->framep[0], sizeof(s->framep[0]) * 4);
        goto skip_decode;
    }
    s->deblock_filter = s->filter.level && avctx->skip_loop_filter < skip_thresh;
    for (i = 0; i < 5; i++)
        if (s->frames[i].data[0] &&
            &s->frames[i] != prev_frame &&
            &s->frames[i] != s->framep[VP56_FRAME_PREVIOUS] &&
            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN] &&
            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN2])
            vp8_release_frame(s, &s->frames[i], 1, 0);
    for (i = 0; i < 5; i++)
        if (&s->frames[i] != prev_frame &&
            &s->frames[i] != s->framep[VP56_FRAME_PREVIOUS] &&
            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN] &&
            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN2]) {
            curframe = s->framep[VP56_FRAME_CURRENT] = &s->frames[i];
            break;
        }
    if (i == 5) {
        av_log(avctx, AV_LOG_FATAL, "Ran out of free frames!\n");
        abort();
    }
    if (curframe->data[0])
        vp8_release_frame(s, curframe, 1, 0);
    if (!s->keyframe && (!s->framep[VP56_FRAME_PREVIOUS] ||
                         !s->framep[VP56_FRAME_GOLDEN] ||
                         !s->framep[VP56_FRAME_GOLDEN2])) {
        av_log(avctx, AV_LOG_WARNING, "Discarding interframe without a prior keyframe!\n");
        ret = AVERROR_INVALIDDATA;
        goto err;
    }
    curframe->key_frame = s->keyframe;
    curframe->pict_type = s->keyframe ? AV_PICTURE_TYPE_I : AV_PICTURE_TYPE_P;
    curframe->reference = referenced ? 3 : 0;
    if ((ret = vp8_alloc_frame(s, curframe))) {
        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed!\n");
        goto err;
    }
    if (s->update_altref != VP56_FRAME_NONE) {
        s->next_framep[VP56_FRAME_GOLDEN2]  = s->framep[s->update_altref];
    } else {
        s->next_framep[VP56_FRAME_GOLDEN2]  = s->framep[VP56_FRAME_GOLDEN2];
    }
    if (s->update_golden != VP56_FRAME_NONE) {
        s->next_framep[VP56_FRAME_GOLDEN]   = s->framep[s->update_golden];
    } else {
        s->next_framep[VP56_FRAME_GOLDEN]   = s->framep[VP56_FRAME_GOLDEN];
    }
    if (s->update_last) {
        s->next_framep[VP56_FRAME_PREVIOUS] = curframe;
    } else {
        s->next_framep[VP56_FRAME_PREVIOUS] = s->framep[VP56_FRAME_PREVIOUS];
    }
    s->next_framep[VP56_FRAME_CURRENT]      = curframe;
    ff_thread_finish_setup(avctx);
    s->linesize   = curframe->linesize[0];
    s->uvlinesize = curframe->linesize[1];
    if (!s->edge_emu_buffer)
        s->edge_emu_buffer = av_malloc(21*s->linesize);
    memset(s->top_nnz, 0, s->mb_width*sizeof(*s->top_nnz));
    memset(s->macroblocks + s->mb_height*2 - 1, 0, (s->mb_width+1)*sizeof(*s->macroblocks));
    if (!(avctx->flags & CODEC_FLAG_EMU_EDGE)) {
        s->top_border[0][15] = s->top_border[0][23] = 127;
        memset(s->top_border[1]-1, 127, s->mb_width*sizeof(*s->top_border)+1);
    }
    memset(s->ref_count, 0, sizeof(s->ref_count));
    if (s->keyframe)
        memset(s->intra4x4_pred_mode_top, DC_PRED, s->mb_width*4);
    s->mv_min.y = -MARGIN;
    s->mv_max.y = ((s->mb_height - 1) << 6) + MARGIN;
    for (mb_y = 0; mb_y < s->mb_height; mb_y++) {
        if (prev_frame && s->segmentation.enabled && !s->segmentation.update_map)
            ff_thread_await_progress(prev_frame, mb_y, 0);
        vp8_decode_mb_row(avctx, curframe, prev_frame, mb_y);
        ff_thread_report_progress(curframe, mb_y, 0);
    }
    ff_thread_report_progress(curframe, INT_MAX, 0);
    memcpy(&s->framep[0], &s->next_framep[0], sizeof(s->framep[0]) * 4);
skip_decode:
    if (!s->update_probabilities)
        s->prob[0] = s->prob[1];
    if (!s->invisible) {
        *(AVFrame*)data = *curframe;
        *data_size = sizeof(AVFrame);
    }
    return avpkt->size;
err:
    memcpy(&s->next_framep[0], &s->framep[0], sizeof(s->framep[0]) * 4);
    return ret;
}
['static int vp8_decode_frame(AVCodecContext *avctx, void *data, int *data_size,\n                            AVPacket *avpkt)\n{\n    VP8Context *s = avctx->priv_data;\n    int ret, mb_y, i, referenced;\n    enum AVDiscard skip_thresh;\n    AVFrame *av_uninit(curframe), *prev_frame;\n    release_queued_segmaps(s, 0);\n    if ((ret = decode_frame_header(s, avpkt->data, avpkt->size)) < 0)\n        goto err;\n    prev_frame = s->framep[VP56_FRAME_CURRENT];\n    referenced = s->update_last || s->update_golden == VP56_FRAME_CURRENT\n                                || s->update_altref == VP56_FRAME_CURRENT;\n    skip_thresh = !referenced ? AVDISCARD_NONREF :\n                    !s->keyframe ? AVDISCARD_NONKEY : AVDISCARD_ALL;\n    if (avctx->skip_frame >= skip_thresh) {\n        s->invisible = 1;\n        memcpy(&s->next_framep[0], &s->framep[0], sizeof(s->framep[0]) * 4);\n        goto skip_decode;\n    }\n    s->deblock_filter = s->filter.level && avctx->skip_loop_filter < skip_thresh;\n    for (i = 0; i < 5; i++)\n        if (s->frames[i].data[0] &&\n            &s->frames[i] != prev_frame &&\n            &s->frames[i] != s->framep[VP56_FRAME_PREVIOUS] &&\n            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN] &&\n            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN2])\n            vp8_release_frame(s, &s->frames[i], 1, 0);\n    for (i = 0; i < 5; i++)\n        if (&s->frames[i] != prev_frame &&\n            &s->frames[i] != s->framep[VP56_FRAME_PREVIOUS] &&\n            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN] &&\n            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN2]) {\n            curframe = s->framep[VP56_FRAME_CURRENT] = &s->frames[i];\n            break;\n        }\n    if (i == 5) {\n        av_log(avctx, AV_LOG_FATAL, "Ran out of free frames!\\n");\n        abort();\n    }\n    if (curframe->data[0])\n        vp8_release_frame(s, curframe, 1, 0);\n    if (!s->keyframe && (!s->framep[VP56_FRAME_PREVIOUS] ||\n                         !s->framep[VP56_FRAME_GOLDEN] ||\n                         !s->framep[VP56_FRAME_GOLDEN2])) {\n        av_log(avctx, AV_LOG_WARNING, "Discarding interframe without a prior keyframe!\\n");\n        ret = AVERROR_INVALIDDATA;\n        goto err;\n    }\n    curframe->key_frame = s->keyframe;\n    curframe->pict_type = s->keyframe ? AV_PICTURE_TYPE_I : AV_PICTURE_TYPE_P;\n    curframe->reference = referenced ? 3 : 0;\n    if ((ret = vp8_alloc_frame(s, curframe))) {\n        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed!\\n");\n        goto err;\n    }\n    if (s->update_altref != VP56_FRAME_NONE) {\n        s->next_framep[VP56_FRAME_GOLDEN2]  = s->framep[s->update_altref];\n    } else {\n        s->next_framep[VP56_FRAME_GOLDEN2]  = s->framep[VP56_FRAME_GOLDEN2];\n    }\n    if (s->update_golden != VP56_FRAME_NONE) {\n        s->next_framep[VP56_FRAME_GOLDEN]   = s->framep[s->update_golden];\n    } else {\n        s->next_framep[VP56_FRAME_GOLDEN]   = s->framep[VP56_FRAME_GOLDEN];\n    }\n    if (s->update_last) {\n        s->next_framep[VP56_FRAME_PREVIOUS] = curframe;\n    } else {\n        s->next_framep[VP56_FRAME_PREVIOUS] = s->framep[VP56_FRAME_PREVIOUS];\n    }\n    s->next_framep[VP56_FRAME_CURRENT]      = curframe;\n    ff_thread_finish_setup(avctx);\n    s->linesize   = curframe->linesize[0];\n    s->uvlinesize = curframe->linesize[1];\n    if (!s->edge_emu_buffer)\n        s->edge_emu_buffer = av_malloc(21*s->linesize);\n    memset(s->top_nnz, 0, s->mb_width*sizeof(*s->top_nnz));\n    memset(s->macroblocks + s->mb_height*2 - 1, 0, (s->mb_width+1)*sizeof(*s->macroblocks));\n    if (!(avctx->flags & CODEC_FLAG_EMU_EDGE)) {\n        s->top_border[0][15] = s->top_border[0][23] = 127;\n        memset(s->top_border[1]-1, 127, s->mb_width*sizeof(*s->top_border)+1);\n    }\n    memset(s->ref_count, 0, sizeof(s->ref_count));\n    if (s->keyframe)\n        memset(s->intra4x4_pred_mode_top, DC_PRED, s->mb_width*4);\n    s->mv_min.y = -MARGIN;\n    s->mv_max.y = ((s->mb_height - 1) << 6) + MARGIN;\n    for (mb_y = 0; mb_y < s->mb_height; mb_y++) {\n        if (prev_frame && s->segmentation.enabled && !s->segmentation.update_map)\n            ff_thread_await_progress(prev_frame, mb_y, 0);\n        vp8_decode_mb_row(avctx, curframe, prev_frame, mb_y);\n        ff_thread_report_progress(curframe, mb_y, 0);\n    }\n    ff_thread_report_progress(curframe, INT_MAX, 0);\n    memcpy(&s->framep[0], &s->next_framep[0], sizeof(s->framep[0]) * 4);\nskip_decode:\n    if (!s->update_probabilities)\n        s->prob[0] = s->prob[1];\n    if (!s->invisible) {\n        *(AVFrame*)data = *curframe;\n        *data_size = sizeof(AVFrame);\n    }\n    return avpkt->size;\nerr:\n    memcpy(&s->next_framep[0], &s->framep[0], sizeof(s->framep[0]) * 4);\n    return ret;\n}']