Avoids freeing lateron.
Showing the changes to libavcodec (1 of 1 file). Show all
Unified · Split
| @@ -341,30 +341,29 @@ static int read_huffman_code_normal(WebPContext *s, HuffReader *hc, · 340 unmodified lines | |||
| 341 | len_counts[len]++; | 341 | len_counts[len]++; |
| 342 | } | 342 | } |
| 343 | 343 | ||
| 344 | ret = huff_reader_build_canonical(&code_len_hc, code_length_code_lengths, len_counts, | ||
| 345 | NUM_CODE_LENGTH_CODES, s->avctx); | ||
| 346 | if (ret < 0) | ||
| 347 | return ret; | ||
| 348 | |||
| 349 | code_lengths = av_malloc(alphabet_size); | ||
| 350 | if (!code_lengths) { | ||
| 351 | ret = AVERROR(ENOMEM); | ||
| 352 | goto finish; | ||
| 353 | } | ||
| 354 | |||
| 355 | if (get_bits1(&s->gb)) { | 344 | if (get_bits1(&s->gb)) { |
| 356 | int bits = 2 + 2 * get_bits(&s->gb, 3); | 345 | int bits = 2 + 2 * get_bits(&s->gb, 3); |
| 357 | max_symbol = 2 + get_bits(&s->gb, bits); | 346 | max_symbol = 2 + get_bits(&s->gb, bits); |
| 358 | if (max_symbol > alphabet_size) { | 347 | if (max_symbol > alphabet_size) { |
| 359 | av_log(s->avctx, AV_LOG_ERROR, "max symbol %d > alphabet size %d\n", | 348 | av_log(s->avctx, AV_LOG_ERROR, "max symbol %d > alphabet size %d\n", |
| 360 | max_symbol, alphabet_size); | 349 | max_symbol, alphabet_size); |
| 361 | ret = AVERROR_INVALIDDATA; | 350 | return AVERROR_INVALIDDATA; |
| 362 | goto finish; | ||
| 363 | } | 351 | } |
| 364 | } else { | 352 | } else { |
| 365 | max_symbol = alphabet_size; | 353 | max_symbol = alphabet_size; |
| 366 | } | 354 | } |
| 367 | 355 | ||
| 356 | ret = huff_reader_build_canonical(&code_len_hc, code_length_code_lengths, len_counts, | ||
| 357 | NUM_CODE_LENGTH_CODES, s->avctx); | ||
| 358 | if (ret < 0) | ||
| 359 | return ret; | ||
| 360 | |||
| 361 | code_lengths = av_malloc(alphabet_size); | ||
| 362 | if (!code_lengths) { | ||
| 363 | ret = AVERROR(ENOMEM); | ||
| 364 | goto finish; | ||
| 365 | } | ||
| 366 | |||
| 368 | prev_code_len = 8; | 367 | prev_code_len = 8; |
| 369 | symbol = 0; | 368 | symbol = 0; |
| 370 | memset(len_counts, 0, sizeof(len_counts)); | 369 | memset(len_counts, 0, sizeof(len_counts)); |