ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/liblzf/lzf_c.c
(Generate patch)

Comparing liblzf/lzf_c.c (file contents):
Revision 1.17 by root, Tue Nov 13 07:54:18 2007 UTC vs.
Revision 1.21 by root, Tue Nov 13 08:38:56 2007 UTC

158 maxlen = maxlen > MAX_REF ? MAX_REF : maxlen; 158 maxlen = maxlen > MAX_REF ? MAX_REF : maxlen;
159 159
160 if (expect_false (op + lit + 1 + 3 >= out_end)) 160 if (expect_false (op + lit + 1 + 3 >= out_end))
161 return 0; 161 return 0;
162 162
163 do 163 if (expect_false (lit))
164 len++;
165 while (len < maxlen && ref[len] == ip[len]);
166
167 if (lit)
168 { 164 {
169 *op++ = lit - 1; 165 *op++ = lit - 1;
170 lit = -lit; 166 lit = -lit;
171 do 167 do
172 *op++ = ip[lit]; 168 *op++ = ip[lit];
173 while (++lit); 169 while (expect_false (++lit));
170 }
171
172 for (;;)
173 {
174 if (expect_true (maxlen > 16))
175 {
176 len++; if (ref [len] != ip [len]) break;
177 len++; if (ref [len] != ip [len]) break;
178 len++; if (ref [len] != ip [len]) break;
179 len++; if (ref [len] != ip [len]) break;
180 len++; if (ref [len] != ip [len]) break;
181 len++; if (ref [len] != ip [len]) break;
182 len++; if (ref [len] != ip [len]) break;
183 len++; if (ref [len] != ip [len]) break;
184 len++; if (ref [len] != ip [len]) break;
185 len++; if (ref [len] != ip [len]) break;
186 len++; if (ref [len] != ip [len]) break;
187 len++; if (ref [len] != ip [len]) break;
188 len++; if (ref [len] != ip [len]) break;
189 len++; if (ref [len] != ip [len]) break;
190 len++; if (ref [len] != ip [len]) break;
191 len++; if (ref [len] != ip [len]) break;
192 }
193
194 do
195 len++;
196 while (len < maxlen && ref[len] == ip[len]);
197
198 break;
174 } 199 }
175 200
176 len -= 2; 201 len -= 2;
177 ip++; 202 ip++;
178 203
229 return 0; 254 return 0;
230 255
231 *op++ = MAX_LIT - 1; 256 *op++ = MAX_LIT - 1;
232 257
233#ifdef lzf_movsb 258#ifdef lzf_movsb
234 ip -= lit; 259 ip -= MAX_LIT;
235 lzf_movsb (op, ip, lit); 260 lzf_movsb (op, ip, lit);
236#else 261#else
237 lit = -lit; 262 lit = -lit;
238 do 263 do
239 *op++ = ip[lit]; 264 *op++ = ip[lit];

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines