static int ebml_read_ascii(AVIOContext *pb, int size, char **str)

{

    av_free(*str);

    /* EBML strings are usually not 0-terminated, so we allocate one

     * byte more, read the string and NULL-terminate it ourselves. */

    if (!(*str = av_malloc(size + 1)))

        return AVERROR(ENOMEM);

    if (avio_read(pb, (uint8_t *) *str, size) != size) {

        av_freep(str);

        return AVERROR(EIO);

    }

    (*str)[size] = '\0';



    return 0;

}

static int ebml_read_ascii(AVIOContext *pb, int size, char **str)

{

    av_free(*str);

    



    if (!(*str = av_malloc(size + 1)))

        return AVERROR(ENOMEM);

    if (avio_read(pb, (uint8_t *) *str, size) != size) {

        av_freep(str);

        return AVERROR(EIO);

    }

    (*str)[size] = '\0';



    return 0;

}

    av_free(*str);     if (!(*str = av_malloc(size + 1)))     if (avio_read(pb, (uint8_t *) *str, size) != size) {         av_freep(str);     (*str)[size] = '\0';
static int FUNC_0(AVIOContext *VAR_0, int VAR_1, char **VAR_2)

{

    av_free(*VAR_2);

    



    if (!(*VAR_2 = av_malloc(VAR_1 + 1)))

        return AVERROR(ENOMEM);

    if (avio_read(VAR_0, (uint8_t *) *VAR_2, VAR_1) != VAR_1) {

        av_freep(VAR_2);

        return AVERROR(EIO);

    }

    (*VAR_2)[VAR_1] = '\0';



    return 0;

}

static int FUNC_0(AVIOContext *VAR_0, int VAR_1, char **VAR_2)
{ av_free(*VAR_2); if (!(*VAR_2 = av_malloc(VAR_1 + 1)))
return AVERROR(ENOMEM); if (avio_read(VAR_0, (uint8_t *) *VAR_2, VAR_1) != VAR_1) { av_freep(VAR_2); return AVERROR(EIO); } (*VAR_2)[VAR_1] = '\0'; return 0; }