-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi,
I have solved the problems of the LZW filter in non 32-bits architectures. Patch attached. JP -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkr+0BMACgkQchi8veCammeBtACcDRm0NbOplCgSCHhQK1Ihy+Nc F0QAn1vI3WF6/Nkynd+/I/eT17mqlaR8 =W7yo -----END PGP SIGNATURE-----
# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: raskolni...@nexus8-20091114151611-ca9wx4sgnt07gmse # target_branch: http://bzr.savannah.gnu.org/r/pdf/libgnupdf/branches\ # /trunk/ # testament_sha1: b4bd70e4c4339d45505abde87c24f362eb3e6d55 # timestamp: 2009-11-14 17:16:31 +0200 # base_revision_id: jema...@termi-20091113141301-6q61dqhso0w00vkt # # Begin patch === modified file 'ChangeLog' --- ChangeLog 2009-11-13 10:16:32 +0000 +++ ChangeLog 2009-11-14 15:16:11 +0000 @@ -1,3 +1,9 @@ +2009-11-14 <raskolni...@nexus8> + + * src/base/pdf-stm-f-lzw.c: Added lzw_code_t type and parametrized + all code bit operations on sizeof (lzw_code_t) to achieve full + portability. + 2009-11-13 Jose E. Marchesi <[email protected]> * README.cvs: Clarify text. Concrete branch command added. === modified file 'src/base/pdf-stm-f-lzw.c' --- src/base/pdf-stm-f-lzw.c 2009-09-05 20:59:39 +0000 +++ src/base/pdf-stm-f-lzw.c 2009-11-14 15:16:11 +0000 @@ -46,8 +46,10 @@ LZW_FIRST_CODE }; +typedef unsigned lzw_code_t; +#define LZW_CODE_SIZE (sizeof (lzw_code_t) << 3) + /* -- LZW code output/input -- */ - /* * Object to read and write codes of variable bitsize in a buffer. * Warning: using both get and put functions may break the buffer. @@ -56,12 +58,12 @@ { pdf_buffer_t buf; pdf_char_t cache [LZW_CACHE_SIZE]; - int cache_rp; - int cache_wp; - unsigned long valbuf; + pdf_size_t cache_rp; + pdf_size_t cache_wp; + lzw_code_t valbuf; + lzw_code_t maxval; + int bitsize; int valbits; - int bitsize; - int maxval; }; typedef struct lzw_buffer_s* lzw_buffer_t; @@ -87,12 +89,12 @@ static pdf_status_t lzw_buffer_get_code (lzw_buffer_t b, - unsigned int* code, + lzw_code_t* code, pdf_bool_t finish_p) { - unsigned long r; + lzw_code_t r; - while (b->valbits <= 24 && !finish_p) + while (b->valbits <= LZW_CODE_SIZE - 8 && !finish_p) { if (pdf_buffer_eob_p (b->buf)) { @@ -101,8 +103,8 @@ else { b->valbuf |= - (unsigned int) b->buf->data [b->buf->rp++] << - (24 - b->valbits); + (lzw_code_t) b->buf->data [b->buf->rp++] + << (LZW_CODE_SIZE - 8 - b->valbits); b->valbits += 8; } @@ -113,10 +115,10 @@ return PDF_EEOF; } - r = b->valbuf >> (32 - b->bitsize); + r = b->valbuf >> (LZW_CODE_SIZE - b->bitsize); b->valbuf <<= b->bitsize; b->valbits -= b->bitsize; - + *code = r; return PDF_OK; @@ -125,20 +127,22 @@ /* Once finished, call with 0 as code value to flush the buffer. */ static void lzw_buffer_put_code (lzw_buffer_t b, - unsigned int code) + lzw_code_t code) { - b->valbuf |= (unsigned long) code << (32 - b->bitsize - b->valbits); + b->valbuf |= (lzw_code_t) code << (LZW_CODE_SIZE - b->bitsize - b->valbits); b->valbits += b->bitsize; while (b->valbits >= 8) { if (pdf_buffer_full_p (b->buf)) { - b->cache [b->cache_wp++] = (pdf_char_t) (b->valbuf >> 24); + b->cache [b->cache_wp++] = + (pdf_char_t) (b->valbuf >> (LZW_CODE_SIZE - 8)); } else { - b->buf->data [b->buf->wp++] = (pdf_char_t) (b->valbuf >> 24); + b->buf->data [b->buf->wp++] = + (pdf_char_t) (b->valbuf >> (LZW_CODE_SIZE - 8)); } b->valbuf <<= 8; b->valbits -= 8; @@ -165,7 +169,7 @@ return PDF_OK; } -static int +static pdf_status_t lzw_buffer_inc_bitsize (lzw_buffer_t b) { if (b->bitsize == LZW_MAX_BITSIZE) @@ -194,12 +198,12 @@ */ struct lzw_string_s { - unsigned prefix; /* Prefix string code */ + lzw_code_t prefix; /* Prefix string code */ pdf_char_t suffix; /* Appended character */ - unsigned first; /* First string with the same prefix. */ - unsigned left; /* Next string with smaller suffix and same prefix. */ - unsigned right; /* Next string with greater suffix and same prefix. */ + lzw_code_t first; /* First string with the same prefix. */ + lzw_code_t left; /* Next string with smaller suffix and same prefix. */ + lzw_code_t right; /* Next string with greater suffix and same prefix. */ }; typedef struct lzw_string_s* lzw_string_t; @@ -213,7 +217,7 @@ struct lzw_dict_s { struct lzw_string_s table [LZW_MAX_DICTSIZE]; - unsigned size; + pdf_size_t size; }; typedef struct lzw_dict_s* lzw_dict_t; @@ -238,8 +242,8 @@ lzw_dict_add (lzw_dict_t d, lzw_string_t s) { - unsigned index; - int must_add; + lzw_code_t index; + pdf_bool_t must_add; if (s->prefix == LZW_NULL_INDEX) { @@ -303,7 +307,7 @@ static void lzw_dict_fast_add (lzw_dict_t d, - unsigned prefix, + lzw_code_t prefix, pdf_char_t suffix) { d->table[d->size].prefix = prefix; @@ -313,9 +317,9 @@ static void lzw_dict_decode (lzw_dict_t d, - unsigned code, + lzw_code_t code, pdf_char_t** decode, - unsigned* size) + pdf_size_t* size) { *size = 0; @@ -494,10 +498,10 @@ /* state */ pdf_char_t dec_buf [LZW_MAX_DICTSIZE]; pdf_char_t* decoded; - unsigned dec_size; + pdf_size_t dec_size; - unsigned new_code; - unsigned old_code; + lzw_code_t new_code; + lzw_code_t old_code; /* flow managment */ enum lzwdec_state state_pos; # Begin bundle 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
lzw-amd64.patch.sig
Description: PGP signature
