about summary refs log tree commit diff
path: root/lib/libpbm2.c
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2008-08-10 18:38:33 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2008-08-10 18:38:33 +0000
commit2f8194e0587030827feb78f648e1d6ca274911c6 (patch)
tree9c85195ecebc3f86248923619d8aa8aac04b989e /lib/libpbm2.c
parent4d64052d6328ba7daba8918b2d87b46c813f4090 (diff)
downloadnetpbm-mirror-2f8194e0587030827feb78f648e1d6ca274911c6.tar.gz
netpbm-mirror-2f8194e0587030827feb78f648e1d6ca274911c6.tar.xz
netpbm-mirror-2f8194e0587030827feb78f648e1d6ca274911c6.zip
Fix shifting within 8 bits
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@697 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'lib/libpbm2.c')
-rw-r--r--lib/libpbm2.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/libpbm2.c b/lib/libpbm2.c
index 3dbd7173..a8e4b0f6 100644
--- a/lib/libpbm2.c
+++ b/lib/libpbm2.c
@@ -251,9 +251,12 @@ pbm_readpbmrow_bitoffset(FILE *          const ifP,
         /* Adjust rightmost char */
         unsigned int  const trs = (cols + rsh) % 8;
         unsigned int  const tls = 8 - trs;
-        unsigned char const origEndShift = (origEnd << trs) >> trs;
+        unsigned char const rightBits =
+            ((unsigned char)(origEnd << trs) >> trs);
+        unsigned char const leftBits =
+            ((unsigned char)(window[last] >> tls) << tls);
 
-        window[last] = (window[last] >> tls) << tls | origEndShift;
+        window[last] =  leftBits | rightBits;
     }
 }