summaryrefslogtreecommitdiff
path: root/src/lzo1b_d.ch
diff options
context:
space:
mode:
Diffstat (limited to 'src/lzo1b_d.ch')
-rw-r--r--src/lzo1b_d.ch46
1 files changed, 16 insertions, 30 deletions
diff --git a/src/lzo1b_d.ch b/src/lzo1b_d.ch
index fe5f361..cf25357 100644
--- a/src/lzo1b_d.ch
+++ b/src/lzo1b_d.ch
@@ -2,22 +2,7 @@
This file is part of the LZO real-time data compression library.
- Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
+ Copyright (C) 1996-2014 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
@@ -53,10 +38,10 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
lzo_bytep out, lzo_uintp out_len,
lzo_voidp wrkmem )
{
- register lzo_bytep op;
- register const lzo_bytep ip;
- register lzo_uint t;
- register const lzo_bytep m_pos;
+ lzo_bytep op;
+ const lzo_bytep ip;
+ lzo_uint t;
+ const lzo_bytep m_pos;
const lzo_bytep const ip_end = in + in_len;
#if defined(HAVE_ANY_OP)
@@ -68,7 +53,7 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
op = out;
ip = in;
- while (TEST_IP && TEST_OP)
+ while (TEST_IP_AND_TEST_OP)
{
t = *ip++; /* get marker */
@@ -96,10 +81,10 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
}
NEED_IP(t); NEED_OP(t);
-#if 1 && defined(LZO_UNALIGNED_OK_4)
+#if 1 && (LZO_OPT_UNALIGNED32)
do {
- UA_COPY32(op+0, ip+0);
- UA_COPY32(op+4, ip+4);
+ UA_COPY4(op+0, ip+0);
+ UA_COPY4(op+4, ip+4);
op += 8; ip += 8;
t -= 8;
} while (t > 0);
@@ -113,11 +98,11 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
NEED_IP(t); NEED_OP(t);
/* copy literal run */
-#if 1 && defined(LZO_UNALIGNED_OK_4)
+#if 1 && (LZO_OPT_UNALIGNED32)
if (t >= 4)
{
do {
- UA_COPY32(op, ip);
+ UA_COPY4(op, ip);
op += 4; ip += 4; t -= 4;
} while (t >= 4);
if (t > 0) do *op++ = *ip++; while (--t > 0);
@@ -136,7 +121,7 @@ literal2:
#endif
/* after a literal a match must follow */
- while (TEST_IP && TEST_OP)
+ while (TEST_IP_AND_TEST_OP)
{
t = *ip++; /* get R1 marker */
if (t >= R0MIN)
@@ -187,6 +172,7 @@ match:
{
t += 255;
ip++;
+ TEST_OV(t);
NEED_IP(1);
}
t += (M4_MIN_LEN - M3_MIN_LEN) + *ip++;
@@ -205,13 +191,13 @@ match:
/* copy match */
assert(m_pos >= out); assert(m_pos < op);
TEST_LB(m_pos); NEED_OP(t + M3_MIN_LEN - 1);
-#if defined(LZO_UNALIGNED_OK_4)
+#if (LZO_OPT_UNALIGNED32)
if (t >= 2 * 4 - (M3_MIN_LEN - 1) && (op - m_pos) >= 4)
{
- UA_COPY32(op, m_pos);
+ UA_COPY4(op, m_pos);
op += 4; m_pos += 4; t -= 4 - (M3_MIN_LEN - 1);
do {
- UA_COPY32(op, m_pos);
+ UA_COPY4(op, m_pos);
op += 4; m_pos += 4; t -= 4;
} while (t >= 4);
if (t > 0) do *op++ = *m_pos++; while (--t > 0);