diff --git a/src/modules/Image/encodings/psd.c b/src/modules/Image/encodings/psd.c index 02dd2bf39552a456e4ecb9bc0ae36d32813be774..c90d03998a19fe603cd98924c8055f08ba0d1209 100644 --- a/src/modules/Image/encodings/psd.c +++ b/src/modules/Image/encodings/psd.c @@ -1,5 +1,5 @@ #include "global.h" -RCSID("$Id: psd.c,v 1.11 1999/05/30 20:12:19 mirar Exp $"); +RCSID("$Id: psd.c,v 1.12 1999/07/16 19:22:42 per Exp $"); #include "image_machine.h" @@ -265,11 +265,12 @@ static void decode_layers_and_masks( struct psd_image *dst, static struct buffer packbitsdecode(struct buffer src, - struct buffer dst) + struct buffer dst, + int nbytes) { int n, b; - while( dst.len > 0 ) + while( nbytes-- ) { n = read_uchar( &src ); if(n >= 128) @@ -343,22 +344,18 @@ static void f_decode_packbits_encoded(INT32 args) switch(compression) { case 1: - push_text(""); - while(nelems--) - { - dest = begin_shared_string( width ); - d.str = dest->str; d.len = width; - ob = packbitsdecode( ob, d ); - ref_push_string( end_shared_string( dest ) ); - f_add( 2 ); - } + dest = begin_shared_string( width * nelems ); + d.str = dest->str; d.len = width*nelems; +/* while(nelems--) */ + /*ob =*/ + packbitsdecode( ob, d, width*nelems ); + push_string( end_shared_string( dest ) ); break; case 0: push_string( make_shared_binary_string(b.str,b.len)); break; default: error("Impossible compression (%d)!\n", src->str[1]); - } stack_swap(); pop_stack();