final fixes
diff --git a/src/libbz3.c b/src/libbz3.c
index e89f723..7bdb3cf 100644
--- a/src/libbz3.c
+++ b/src/libbz3.c
@@ -273,10 +273,12 @@ typedef struct {
static void bz3_init_encode_thread(encode_thread_msg * msg) {
msg->size = bz3_encode_block(msg->state, msg->buffer, msg->size);
+ pthread_exit(NULL);
}
static void bz3_init_decode_thread(decode_thread_msg * msg) {
bz3_decode_block(msg->state, msg->buffer, msg->size, msg->orig_size);
+ pthread_exit(NULL);
}
void bz3_encode_blocks(struct bz3_state * states[], uint8_t * buffers[], int32_t sizes[], int32_t n) {
diff --git a/src/main.c b/src/main.c
index f8e5c26..d0edaf7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -294,7 +294,7 @@ int main(int argc, char * argv[]) {
size_t read_count = fread(buffers[i], 1, block_size, input_des);
sizes[i] = old_sizes[i] = read_count;
if(read_count < block_size)
- break;
+ { i++; break; }
}
bz3_encode_blocks(states, buffers, sizes, i);
for(s32 j = 0; j < i; j++) {
