libavformat/matroskadec.c:927: error: Uninitialized Value
  The value read from length was never initialized.

libavformat/matroskadec.c:927:15: 
925.         break;
926.     case EBML_FLOAT:
927.         res = ebml_read_float(pb, length, data);
                   ^
928.         break;
929.     case EBML_STR:

static int ebml_parse_elem(MatroskaDemuxContext *matroska,
                           EbmlSyntax *syntax, void *data)
{
    static const uint64_t max_lengths[EBML_TYPE_COUNT] = {
        [EBML_UINT]  = 8,
        [EBML_FLOAT] = 8,
        [EBML_STR]   = 0x1000000,
        [EBML_UTF8]  = 0x1000000,
        [EBML_BIN]   = 0x10000000,
    };
    AVIOContext *pb = matroska->ctx->pb;
    uint32_t id = syntax->id;
    uint64_t length;
    int res;
    data = (char *) data + syntax->data_offset;
    if (syntax->list_elem_size) {
        EbmlList *list = data;
        if ((res = av_reallocp_array(&list->elem,
                                     list->nb_elem + 1,
                                     syntax->list_elem_size)) < 0) {
            list->nb_elem = 0;
            return res;
        }
        data = (char *) list->elem + list->nb_elem * syntax->list_elem_size;
        memset(data, 0, syntax->list_elem_size);
        list->nb_elem++;
    }
    if (syntax->type != EBML_PASS && syntax->type != EBML_STOP) {
        matroska->current_id = 0;
        if ((res = ebml_read_length(matroska, pb, &length)) < 0)
            return res;
        if (max_lengths[syntax->type] && length > max_lengths[syntax->type]) {
            av_log(matroska->ctx, AV_LOG_ERROR,
                   "Invalid length 0x%"PRIx64" > 0x%"PRIx64" for syntax element %i\n",
                   length, max_lengths[syntax->type], syntax->type);
            return AVERROR_INVALIDDATA;
        }
    }
    switch (syntax->type) {
    case EBML_UINT:
        res = ebml_read_uint(pb, length, data);
        break;
    case EBML_FLOAT:
        res = ebml_read_float(pb, length, data);
        break;
    case EBML_STR:
    case EBML_UTF8:
        res = ebml_read_ascii(pb, length, data);
        break;
    case EBML_BIN:
        res = ebml_read_binary(pb, length, data);
        break;
    case EBML_NEST:
        if ((res = ebml_read_master(matroska, length)) < 0)
            return res;
        if (id == MATROSKA_ID_SEGMENT)
            matroska->segment_start = avio_tell(matroska->ctx->pb);
        return ebml_parse_nest(matroska, syntax->def.n, data);
    case EBML_PASS:
        return ebml_parse_id(matroska, syntax->def.n, id, data);
    case EBML_STOP:
        return 1;
    default:
        return avio_skip(pb, length) < 0 ? AVERROR(EIO) : 0;
    }
    if (res == AVERROR_INVALIDDATA)
        av_log(matroska->ctx, AV_LOG_ERROR, "Invalid element\n");
    else if (res == AVERROR(EIO))
        av_log(matroska->ctx, AV_LOG_ERROR, "Read error\n");
    return res;
}
['static int ebml_parse_elem(MatroskaDemuxContext *matroska,\n                           EbmlSyntax *syntax, void *data)\n{\n    static const uint64_t max_lengths[EBML_TYPE_COUNT] = {\n        [EBML_UINT]  = 8,\n        [EBML_FLOAT] = 8,\n        [EBML_STR]   = 0x1000000,\n        [EBML_UTF8]  = 0x1000000,\n        [EBML_BIN]   = 0x10000000,\n    };\n    AVIOContext *pb = matroska->ctx->pb;\n    uint32_t id = syntax->id;\n    uint64_t length;\n    int res;\n    data = (char *) data + syntax->data_offset;\n    if (syntax->list_elem_size) {\n        EbmlList *list = data;\n        if ((res = av_reallocp_array(&list->elem,\n                                     list->nb_elem + 1,\n                                     syntax->list_elem_size)) < 0) {\n            list->nb_elem = 0;\n            return res;\n        }\n        data = (char *) list->elem + list->nb_elem * syntax->list_elem_size;\n        memset(data, 0, syntax->list_elem_size);\n        list->nb_elem++;\n    }\n    if (syntax->type != EBML_PASS && syntax->type != EBML_STOP) {\n        matroska->current_id = 0;\n        if ((res = ebml_read_length(matroska, pb, &length)) < 0)\n            return res;\n        if (max_lengths[syntax->type] && length > max_lengths[syntax->type]) {\n            av_log(matroska->ctx, AV_LOG_ERROR,\n                   "Invalid length 0x%"PRIx64" > 0x%"PRIx64" for syntax element %i\\n",\n                   length, max_lengths[syntax->type], syntax->type);\n            return AVERROR_INVALIDDATA;\n        }\n    }\n    switch (syntax->type) {\n    case EBML_UINT:\n        res = ebml_read_uint(pb, length, data);\n        break;\n    case EBML_FLOAT:\n        res = ebml_read_float(pb, length, data);\n        break;\n    case EBML_STR:\n    case EBML_UTF8:\n        res = ebml_read_ascii(pb, length, data);\n        break;\n    case EBML_BIN:\n        res = ebml_read_binary(pb, length, data);\n        break;\n    case EBML_NEST:\n        if ((res = ebml_read_master(matroska, length)) < 0)\n            return res;\n        if (id == MATROSKA_ID_SEGMENT)\n            matroska->segment_start = avio_tell(matroska->ctx->pb);\n        return ebml_parse_nest(matroska, syntax->def.n, data);\n    case EBML_PASS:\n        return ebml_parse_id(matroska, syntax->def.n, id, data);\n    case EBML_STOP:\n        return 1;\n    default:\n        return avio_skip(pb, length) < 0 ? AVERROR(EIO) : 0;\n    }\n    if (res == AVERROR_INVALIDDATA)\n        av_log(matroska->ctx, AV_LOG_ERROR, "Invalid element\\n");\n    else if (res == AVERROR(EIO))\n        av_log(matroska->ctx, AV_LOG_ERROR, "Read error\\n");\n    return res;\n}']