diff options
Diffstat (limited to 'infblock.c')
-rw-r--r-- | infblock.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* infblock.c -- interpret and process block types to last block | 1 | /* infblock.c -- interpret and process block types to last block |
2 | * Copyright (C) 1995-1998 Mark Adler | 2 | * Copyright (C) 1995-2002 Mark Adler |
3 | * For conditions of distribution and use, see copyright notice in zlib.h | 3 | * For conditions of distribution and use, see copyright notice in zlib.h |
4 | */ | 4 | */ |
5 | 5 | ||
@@ -249,10 +249,12 @@ int r; | |||
249 | &s->sub.trees.tb, s->hufts, z); | 249 | &s->sub.trees.tb, s->hufts, z); |
250 | if (t != Z_OK) | 250 | if (t != Z_OK) |
251 | { | 251 | { |
252 | ZFREE(z, s->sub.trees.blens); | ||
253 | r = t; | 252 | r = t; |
254 | if (r == Z_DATA_ERROR) | 253 | if (r == Z_DATA_ERROR) |
254 | { | ||
255 | ZFREE(z, s->sub.trees.blens); | ||
255 | s->mode = BAD; | 256 | s->mode = BAD; |
257 | } | ||
256 | LEAVE | 258 | LEAVE |
257 | } | 259 | } |
258 | s->sub.trees.index = 0; | 260 | s->sub.trees.index = 0; |
@@ -313,11 +315,13 @@ int r; | |||
313 | t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), | 315 | t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), |
314 | s->sub.trees.blens, &bl, &bd, &tl, &td, | 316 | s->sub.trees.blens, &bl, &bd, &tl, &td, |
315 | s->hufts, z); | 317 | s->hufts, z); |
316 | ZFREE(z, s->sub.trees.blens); | ||
317 | if (t != Z_OK) | 318 | if (t != Z_OK) |
318 | { | 319 | { |
319 | if (t == (uInt)Z_DATA_ERROR) | 320 | if (t == (uInt)Z_DATA_ERROR) |
321 | { | ||
322 | ZFREE(z, s->sub.trees.blens); | ||
320 | s->mode = BAD; | 323 | s->mode = BAD; |
324 | } | ||
321 | r = t; | 325 | r = t; |
322 | LEAVE | 326 | LEAVE |
323 | } | 327 | } |
@@ -329,6 +333,7 @@ int r; | |||
329 | } | 333 | } |
330 | s->sub.decode.codes = c; | 334 | s->sub.decode.codes = c; |
331 | } | 335 | } |
336 | ZFREE(z, s->sub.trees.blens); | ||
332 | s->mode = CODES; | 337 | s->mode = CODES; |
333 | case CODES: | 338 | case CODES: |
334 | UPDATE | 339 | UPDATE |