ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Compress-LZF/LZF.xs
(Generate patch)

Comparing Compress-LZF/LZF.xs (file contents):
Revision 1.10 by root, Tue Mar 26 17:49:24 2002 UTC vs.
Revision 1.13 by root, Sat May 18 21:48:39 2002 UTC

162 usize = (usize << 6) | (*src++ & 0x3f); 162 usize = (usize << 6) | (*src++ & 0x3f);
163 usize = (usize << 6) | (*src++ & 0x3f); 163 usize = (usize << 6) | (*src++ & 0x3f);
164 usize = (usize << 6) | (*src++ & 0x3f); 164 usize = (usize << 6) | (*src++ & 0x3f);
165 } 165 }
166 else 166 else
167 croak ("compressed data corrupted"); 167 croak ("compressed data corrupted (invalid length)");
168 168
169 ret = NEWSV (0, usize); 169 ret = NEWSV (0, usize);
170 SvPOK_only (ret); 170 SvPOK_only (ret);
171 dst = SvPVX (ret); 171 dst = SvPVX (ret);
172 172
173 if (lzf_decompress (src, csize, dst, usize) != usize) 173 if (lzf_decompress (src, csize, dst, usize) != usize)
174 croak ("compressed data corrupted", csize, skip, usize); 174 croak ("compressed data corrupted (size mismatch)", csize, skip, usize);
175 } 175 }
176 else 176 else
177 { 177 {
178 usize = csize - 1; 178 usize = csize - 1;
179 ret = NEWSV (0, usize); 179 ret = NEWSV (0, usize);
230 230
231 SvGETMAGIC (sv); 231 SvGETMAGIC (sv);
232 232
233 if (!SvOK (sv)) 233 if (!SvOK (sv))
234 XPUSHs (sv_2mortal (newSVpvn ("\02", 1))); /* 02 == MAGIC_undef */ 234 XPUSHs (sv_2mortal (newSVpvn ("\02", 1))); /* 02 == MAGIC_undef */
235 else if (SvROK (sv)
235 else if (SvTYPE(sv) != SVt_IV 236 || (SvTYPE(sv) != SVt_IV
236 && SvTYPE(sv) != SVt_NV 237 && SvTYPE(sv) != SVt_NV
237 && SvTYPE(sv) != SVt_PV 238 && SvTYPE(sv) != SVt_PV
238 && SvTYPE(sv) != SVt_PVMG+99999) /* mstore */ 239 && SvTYPE(sv) != SVt_PVMG)) /* mstore */
239 { 240 {
240 int deref = !SvROK (sv); 241 int deref = !SvROK (sv);
241 242
242 if (!storable_mstore) 243 if (!storable_mstore)
243 need_storable (); 244 need_storable ();
265 if (ix) /* compress */ 266 if (ix) /* compress */
266 sv = sv_2mortal (compress_sv (sv, deref ? MAGIC_CR_deref : MAGIC_CR, -1)); 267 sv = sv_2mortal (compress_sv (sv, deref ? MAGIC_CR_deref : MAGIC_CR, -1));
267 268
268 XPUSHs (sv); 269 XPUSHs (sv);
269 } 270 }
270 else if (SvTYPE (sv) == SVt_PV && IN_RANGE (SvPVX (sv)[0], MAGIC_LO, MAGIC_HI)) 271 else if (SvPOKp (sv) && IN_RANGE (SvPVX (sv)[0], MAGIC_LO, MAGIC_HI))
271 XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, MAGIC_U))); /* need to prefix only */ 272 XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, MAGIC_U))); /* need to prefix only */
272 else if (ix == 2) /* compress always */ 273 else if (ix == 2) /* compress always */
273 XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, -1))); 274 XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, -1)));
274 else /* don't compress */ 275 else /* don't compress */
275 XPUSHs (sv_2mortal (SvREFCNT_inc (sv))); 276 XPUSHs (sv_2mortal (SvREFCNT_inc (sv)));
343 default: 344 default:
344 croak ("Compress::LZF::sthaw(): invalid data, maybe you need a newer version of Compress::LZF?"); 345 croak ("Compress::LZF::sthaw(): invalid data, maybe you need a newer version of Compress::LZF?");
345 } 346 }
346 } 347 }
347 else 348 else
348 XPUSHs (sv_2mortal (SvREFCNT_inc (sv))); 349 XPUSHs (sv_2mortal (newSVsv (sv)));

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines