pdf-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[pdf-devel] GHM gift: LZW amd64 patch.


From: Juan Pedro Bolivar Puente
Subject: [pdf-devel] GHM gift: LZW amd64 patch.
Date: Sat, 14 Nov 2009 17:43:15 +0200
User-agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090701)

-----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: address@hidden
# 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: address@hidden
# 
# 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    <address@hidden>
+
+       * 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  <address@hidden>
 
        * 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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

Attachment: lzw-amd64.patch.sig
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]