Mercurial > hg > dmlib
comparison src/dmzlib.c @ 1075:97ccd6d972ff
Comments, cosmetics.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 02 Mar 2015 04:17:30 +0200 |
parents | e98bc627ad08 |
children | 7bf421248190 |
comparison
equal
deleted
inserted
replaced
1074:e98bc627ad08 | 1075:97ccd6d972ff |
---|---|
323 } | 323 } |
324 *outBuffer++ = (Uint8) z; | 324 *outBuffer++ = (Uint8) z; |
325 } | 325 } |
326 else | 326 else |
327 { | 327 { |
328 Uint8 *p; | 328 Uint8 *ptr; |
329 int len, dist; | 329 int len, dist; |
330 if (z == 256) | 330 if (z == 256) |
331 { | 331 { |
332 ctx->outBuffer = outBuffer; | 332 ctx->outBuffer = outBuffer; |
333 return DMERR_OK; | 333 return DMERR_OK; |
350 { | 350 { |
351 return dmErrorDBG(DMERR_DATA_ERROR, | 351 return dmErrorDBG(DMERR_DATA_ERROR, |
352 "Bad Huffman block distance.\n"); | 352 "Bad Huffman block distance.\n"); |
353 } | 353 } |
354 | 354 |
355 // Check if output buffer needs to expand | |
355 if (outBuffer + len > ctx->outBufferEnd) | 356 if (outBuffer + len > ctx->outBufferEnd) |
356 { | 357 { |
357 if ((ret = dmZLibExpand(ctx, outBuffer, len)) != DMERR_OK) | 358 if ((ret = dmZLibExpand(ctx, outBuffer, len)) != DMERR_OK) |
358 return ret; | 359 return ret; |
359 outBuffer = ctx->outBuffer; | 360 outBuffer = ctx->outBuffer; |
360 } | 361 } |
361 p = (Uint8 *) (outBuffer - dist); | 362 |
363 ptr = outBuffer - dist; | |
362 if (dist == 1) | 364 if (dist == 1) |
363 { // run of one byte; common in images. | 365 { // run of one byte; common in images. |
364 Uint8 v = *p; | 366 Uint8 v = *ptr; |
365 do { *outBuffer++ = v; } while (--len); | 367 do { *outBuffer++ = v; } while (--len); |
366 } | 368 } |
367 else | 369 else |
368 { | 370 { |
369 do { *outBuffer++ = *p++; } while (--len); | 371 do { *outBuffer++ = *ptr++; } while (--len); |
370 } | 372 } |
371 } | 373 } |
372 } | 374 } |
373 } | 375 } |
374 | 376 |
524 { | 526 { |
525 return dmErrorDBG(DMERR_BOUNDS, | 527 return dmErrorDBG(DMERR_BOUNDS, |
526 "Read past buffer, probably corrupt compressed data.\n"); | 528 "Read past buffer, probably corrupt compressed data.\n"); |
527 } | 529 } |
528 | 530 |
531 // Check if output buffer needs to expand | |
529 if (ctx->outBuffer + len > ctx->outBufferEnd && | 532 if (ctx->outBuffer + len > ctx->outBufferEnd && |
530 (ret = dmZLibExpand(ctx, ctx->outBuffer, len)) != DMERR_OK) | 533 (ret = dmZLibExpand(ctx, ctx->outBuffer, len)) != DMERR_OK) |
531 { | 534 { |
532 return dmErrorDBG(DMERR_DATA_ERROR, | 535 return dmErrorDBG(DMERR_DATA_ERROR, |
533 "Could not expand output buffer: %d, %s\n", | 536 "Could not expand output buffer: %d, %s\n", |
534 ret, dmErrorStr(ret)); | 537 ret, dmErrorStr(ret)); |
535 } | 538 } |
536 | 539 |
540 // Copy uncompressed data | |
537 memcpy(ctx->outBuffer, ctx->inBuffer, len); | 541 memcpy(ctx->outBuffer, ctx->inBuffer, len); |
538 ctx->inBuffer += len; | 542 ctx->inBuffer += len; |
539 ctx->outBuffer += len; | 543 ctx->outBuffer += len; |
540 } | 544 } |
541 | 545 |