summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDirk Engling <erdgeist@erdgeist.org>2015-05-03 01:13:51 +0200
committerDirk Engling <erdgeist@erdgeist.org>2015-05-03 01:13:51 +0200
commit27664a5634d04167b3a5a700a45131f0ffbf162a (patch)
tree9ecde92211bc88a6c93e1f2820267376dcc86dc4
parent1965f3d32fa8bb63965135dc06985a3dec0af81b (diff)
Fix amount of chunks passed to decompressor in first page
-rw-r--r--src/export/extract_version_2.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/export/extract_version_2.c b/src/export/extract_version_2.c
index 68b05af..f39bf5d 100644
--- a/src/export/extract_version_2.c
+++ b/src/export/extract_version_2.c
@@ -346,7 +346,7 @@ static void decompress_subchunk( uint8_t * subchunk, size_t subchunk_size, int c
346 err = decomp(&s); 346 err = decomp(&s);
347 if( err ) { 347 if( err ) {
348 for( i=0; i<32; ++i ) fprintf( stderr, "%02X ", s.in[i] ); 348 for( i=0; i<32; ++i ) fprintf( stderr, "%02X ", s.in[i] );
349 fprintf( stderr, "\nError: %d\n", err ); 349 fprintf( stderr, "\nError: %d (%d chunks left at %08x)\n", err, chunks, (unsigned int)(subchunk) );
350 return; 350 return;
351 } 351 }
352 352
@@ -384,7 +384,6 @@ int main( int args, char **argv ) {
384 384
385 file = map_file( argv[1], 1 ); 385 file = map_file( argv[1], 1 );
386 if( !file ) exit( 1 ); 386 if( !file ) exit( 1 );
387 fp = file->addr;
388 387
389 num_subchunks = *(uint16_t*)(fp+0x14); 388 num_subchunks = *(uint16_t*)(fp+0x14);
390 subchunk_rest_count = *(uint16_t*)(fp+0x1c); 389 subchunk_rest_count = *(uint16_t*)(fp+0x1c);
@@ -394,7 +393,7 @@ int main( int args, char **argv ) {
394 decode_19bit_address ( fp + 0x20, offsets, num_subchunks ); 393 decode_19bit_address ( fp + 0x20, offsets, num_subchunks );
395 offsets[num_subchunks] = file->size; 394 offsets[num_subchunks] = file->size;
396 395
397 decompress_subchunk( subchunk, offsets[i], subchunk_one_count, MAXWIN ); 396 decompress_subchunk( subchunk, offsets[0], subchunk_one_count + 1, MAXWIN );
398 397
399 for( i=0; i< num_subchunks; ++i ) 398 for( i=0; i< num_subchunks; ++i )
400 if( offsets[i] + 0x800 < file->size ) 399 if( offsets[i] + 0x800 < file->size )