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.25 by root, Wed Jan 9 20:41:18 2008 UTC vs.
Revision 1.27 by root, Mon Sep 22 03:29:56 2008 UTC

218 else 218 else
219 return newSVpvn ("", 0); 219 return newSVpvn ("", 0);
220} 220}
221 221
222static void 222static void
223need_storable(void) 223need_storable (void)
224{ 224{
225 load_module (PERL_LOADMOD_NOIMPORT, serializer_package, Nullsv); 225 require_pv (SvPVbyte_nolen (serializer_package));
226 226
227 storable_mstore = GvCV (gv_fetchpv (SvPVbyte_nolen (serializer_mstore ), TRUE, SVt_PVCV)); 227 storable_mstore = (CV *)SvREFCNT_inc (GvCV (gv_fetchpv (SvPVbyte_nolen (serializer_mstore ), TRUE, SVt_PVCV)));
228 storable_mretrieve = GvCV (gv_fetchpv (SvPVbyte_nolen (serializer_mretrieve), TRUE, SVt_PVCV)); 228 storable_mretrieve = (CV *)SvREFCNT_inc (GvCV (gv_fetchpv (SvPVbyte_nolen (serializer_mretrieve), TRUE, SVt_PVCV)));
229} 229}
230 230
231MODULE = Compress::LZF PACKAGE = Compress::LZF 231MODULE = Compress::LZF PACKAGE = Compress::LZF
232 232
233BOOT: 233BOOT:
243 PROTOTYPE: $$$ 243 PROTOTYPE: $$$
244 PPCODE: 244 PPCODE:
245 SvSetSV (serializer_package , package ); 245 SvSetSV (serializer_package , package );
246 SvSetSV (serializer_mstore , mstore ); 246 SvSetSV (serializer_mstore , mstore );
247 SvSetSV (serializer_mretrieve, mretrieve); 247 SvSetSV (serializer_mretrieve, mretrieve);
248 storable_mstore = 248 SvREFCNT_dec (storable_mstore ); storable_mstore = 0;
249 storable_mretrieve = 0; 249 SvREFCNT_dec (storable_mretrieve); storable_mretrieve = 0;
250 250
251void 251void
252compress(data) 252compress(data)
253 SV * data 253 SV * data
254 PROTOTYPE: $ 254 PROTOTYPE: $
283 && SvTYPE(sv) != SVt_PVIV 283 && SvTYPE(sv) != SVt_PVIV
284 && SvTYPE(sv) != SVt_PVNV 284 && SvTYPE(sv) != SVt_PVNV
285 && SvTYPE(sv) != SVt_PVMG)) /* mstore */ 285 && SvTYPE(sv) != SVt_PVMG)) /* mstore */
286 { 286 {
287 int deref = !SvROK (sv); 287 int deref = !SvROK (sv);
288 char *pv;
288 289
289 if (!storable_mstore) 290 if (!storable_mstore)
290 { 291 {
291 PUTBACK; 292 PUTBACK;
292 need_storable (); 293 need_storable ();
304 croak ("Storable::mstore didn't return a single scalar"); 305 croak ("Storable::mstore didn't return a single scalar");
305 306
306 SPAGAIN; 307 SPAGAIN;
307 308
308 sv = POPs; 309 sv = POPs;
310 pv = SvPV_nolen (sv);
309 311
310 if (SvPVX (sv)[0] == MAGIC_R) 312 if (*pv == MAGIC_R)
311 { 313 {
312 if (deref) 314 if (deref)
313 SvPVX (sv)[0] = MAGIC_R_deref; 315 *pv = MAGIC_R_deref;
314 } 316 }
315 else 317 else
316 { 318 {
317 char pfx[2]; 319 char pfx[2];
318 320

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines