Mercurial > repos > blastem
comparison event_log.c @ 1972:f2d37131840e
Fix "full" deflate flush so multiple remotes can successfully join
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 08 May 2020 14:59:49 -0700 |
parents | 80920c21bb52 |
children | cd163b230cf9 |
comparison
equal
deleted
inserted
replaced
1971:80920c21bb52 | 1972:f2d37131840e |
---|---|
355 } | 355 } |
356 | 356 |
357 void deflate_flush(uint8_t full) | 357 void deflate_flush(uint8_t full) |
358 { | 358 { |
359 output_stream.avail_in = buffer.size - (output_stream.next_in - buffer.data); | 359 output_stream.avail_in = buffer.size - (output_stream.next_in - buffer.data); |
360 while (output_stream.avail_in) | 360 uint8_t force = full; |
361 while (output_stream.avail_in || force) | |
361 { | 362 { |
362 if (!output_stream.avail_out) { | 363 if (!output_stream.avail_out) { |
363 size_t old_storage = compressed_storage; | 364 size_t old_storage = compressed_storage; |
364 uint8_t *old_compressed = compressed; | 365 uint8_t *old_compressed = compressed; |
365 compressed_storage *= 2; | 366 compressed_storage *= 2; |
374 } | 375 } |
375 int result = deflate(&output_stream, full ? Z_FINISH : Z_SYNC_FLUSH); | 376 int result = deflate(&output_stream, full ? Z_FINISH : Z_SYNC_FLUSH); |
376 if (result != (full ? Z_STREAM_END : Z_OK)) { | 377 if (result != (full ? Z_STREAM_END : Z_OK)) { |
377 fatal_error("deflate returned %d\n", result); | 378 fatal_error("deflate returned %d\n", result); |
378 } | 379 } |
379 if (full) { | 380 if (full && result == Z_STREAM_END) { |
380 result = deflateReset(&output_stream); | 381 result = deflateReset(&output_stream); |
381 if (result != Z_OK) { | 382 if (result != Z_OK) { |
382 fatal_error("deflateReset returned %d\n", result); | 383 fatal_error("deflateReset returned %d\n", result); |
383 } | 384 } |
384 } | 385 } |
386 force = 0; | |
385 } | 387 } |
386 output_stream.next_in = buffer.data; | 388 output_stream.next_in = buffer.data; |
387 buffer.size = 0; | 389 buffer.size = 0; |
388 } | 390 } |
389 | 391 |