# HG changeset patch # User lorenm # Date 1273703885 0 # Node ID b9354f343d2d15093cccf50e0936b0677c3c8a85 # Parent 25ed714369745aa59f77ecdf7f7253e54211cbb3 change a variable-length array to a malloc. diff -r 25ed71436974 -r b9354f343d2d bitstream.c --- a/bitstream.c Wed May 12 17:05:56 2010 +0000 +++ b/bitstream.c Wed May 12 22:38:05 2010 +0000 @@ -275,8 +275,8 @@ const void *symbols, int symbols_wrap, int symbols_size, int flags) { - VLCcode buf[nb_codes]; - int i, j; + VLCcode *buf; + int i, j, ret; vlc->bits = nb_bits; if(flags & INIT_VLC_USE_NEW_STATIC){ @@ -295,6 +295,8 @@ av_log(NULL,AV_LOG_DEBUG,"build table nb_codes=%d\n", nb_codes); #endif + buf = av_malloc((nb_codes+1)*sizeof(VLCcode)); + assert(symbols_size <= 2 || !symbols); j = 0; #define COPY(condition)\ @@ -319,7 +321,10 @@ COPY(buf[j].bits && buf[j].bits <= nb_bits); nb_codes = j; - if (build_table(vlc, nb_bits, nb_codes, buf, flags) < 0) { + ret = build_table(vlc, nb_bits, nb_codes, buf, flags); + + av_free(buf); + if (ret < 0) { av_freep(&vlc->table); return -1; }