Merging upstream version 1.8.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
95e76700ee
commit
3ab3342c4f
21 changed files with 729 additions and 460 deletions
28
compress.cc
28
compress.cc
|
@ -1,6 +1,6 @@
|
|||
/* Plzip - Parallel compressor compatible with lzip
|
||||
/* Plzip - Massively parallel implementation of lzip
|
||||
Copyright (C) 2009 Laszlo Ersek.
|
||||
Copyright (C) 2009-2018 Antonio Diaz Diaz.
|
||||
Copyright (C) 2009-2019 Antonio Diaz Diaz.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -25,7 +25,6 @@
|
|||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <queue>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <pthread.h>
|
||||
|
@ -196,7 +195,7 @@ public:
|
|||
ocheck_counter( 0 ), owait_counter( 0 ),
|
||||
receive_id( 0 ), distrib_id( 0 ), deliver_id( 0 ),
|
||||
slot_tally( slots ), circular_ibuffer( slots ),
|
||||
circular_obuffer( slots, (Packet *) 0 ),
|
||||
circular_obuffer( slots, (const Packet *) 0 ),
|
||||
num_working( workers ), num_slots( slots ), eof( false )
|
||||
{
|
||||
xinit_mutex( &imutex ); xinit_cond( &iav_or_eof );
|
||||
|
@ -318,7 +317,7 @@ struct Splitter_arg
|
|||
// courier for packaging and distribution to workers.
|
||||
extern "C" void * csplitter( void * arg )
|
||||
{
|
||||
const Splitter_arg & tmp = *(Splitter_arg *)arg;
|
||||
const Splitter_arg & tmp = *(const Splitter_arg *)arg;
|
||||
Packet_courier & courier = *tmp.courier;
|
||||
const Pretty_print & pp = *tmp.pp;
|
||||
const int infd = tmp.infd;
|
||||
|
@ -364,7 +363,7 @@ struct Worker_arg
|
|||
// them to courier.
|
||||
extern "C" void * cworker( void * arg )
|
||||
{
|
||||
const Worker_arg & tmp = *(Worker_arg *)arg;
|
||||
const Worker_arg & tmp = *(const Worker_arg *)arg;
|
||||
Packet_courier & courier = *tmp.courier;
|
||||
const Pretty_print & pp = *tmp.pp;
|
||||
const int dictionary_size = tmp.dictionary_size;
|
||||
|
@ -401,18 +400,15 @@ extern "C" void * cworker( void * arg )
|
|||
int new_pos = 0;
|
||||
while( true )
|
||||
{
|
||||
if( LZ_compress_write_size( encoder ) > 0 )
|
||||
if( written < packet->size )
|
||||
{
|
||||
if( written < packet->size )
|
||||
{
|
||||
const int wr = LZ_compress_write( encoder,
|
||||
packet->data + offset + written,
|
||||
packet->size - written );
|
||||
if( wr < 0 ) internal_error( "library error (LZ_compress_write)." );
|
||||
written += wr;
|
||||
}
|
||||
if( written >= packet->size ) LZ_compress_finish( encoder );
|
||||
const int wr = LZ_compress_write( encoder,
|
||||
packet->data + offset + written,
|
||||
packet->size - written );
|
||||
if( wr < 0 ) internal_error( "library error (LZ_compress_write)." );
|
||||
written += wr;
|
||||
}
|
||||
if( written >= packet->size ) LZ_compress_finish( encoder );
|
||||
const int rd = LZ_compress_read( encoder, packet->data + new_pos,
|
||||
offset + written - new_pos );
|
||||
if( rd < 0 )
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue