… | |
… | |
255 | XPUSHs (sv_2mortal (newSVpvn ("\02", 1))); /* 02 == MAGIC_undef */ |
255 | XPUSHs (sv_2mortal (newSVpvn ("\02", 1))); /* 02 == MAGIC_undef */ |
256 | else if (SvROK (sv) |
256 | else if (SvROK (sv) |
257 | || (SvTYPE(sv) != SVt_IV |
257 | || (SvTYPE(sv) != SVt_IV |
258 | && SvTYPE(sv) != SVt_NV |
258 | && SvTYPE(sv) != SVt_NV |
259 | && SvTYPE(sv) != SVt_PV |
259 | && SvTYPE(sv) != SVt_PV |
|
|
260 | && SvTYPE(sv) != SVt_PVIV |
|
|
261 | && SvTYPE(sv) != SVt_PVNV |
260 | && SvTYPE(sv) != SVt_PVMG)) /* mstore */ |
262 | && SvTYPE(sv) != SVt_PVMG)) /* mstore */ |
261 | { |
263 | { |
262 | int deref = !SvROK (sv); |
264 | int deref = !SvROK (sv); |
263 | |
265 | |
264 | if (!storable_mstore) |
266 | if (!storable_mstore) |
… | |
… | |
291 | } |
293 | } |
292 | else if (SvPOKp (sv) && IN_RANGE (SvPVX (sv)[0], MAGIC_LO, MAGIC_HI)) |
294 | else if (SvPOKp (sv) && IN_RANGE (SvPVX (sv)[0], MAGIC_LO, MAGIC_HI)) |
293 | XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, MAGIC_U))); /* need to prefix only */ |
295 | XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, MAGIC_U))); /* need to prefix only */ |
294 | else if (ix == 2) /* compress always */ |
296 | else if (ix == 2) /* compress always */ |
295 | XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, -1))); |
297 | XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, -1))); |
|
|
298 | else if (SvNIOK (sv)) /* don't compress */ |
|
|
299 | { |
|
|
300 | STRLEN len; |
|
|
301 | char *s = SvPV (sv, len); |
|
|
302 | XPUSHs (sv_2mortal (newSVpvn (s, len))); |
|
|
303 | } |
296 | else /* don't compress */ |
304 | else /* don't compress */ |
297 | XPUSHs (sv_2mortal (SvREFCNT_inc (sv))); |
305 | XPUSHs (sv_2mortal (newSVsv (sv))); |
298 | |
306 | |
299 | void |
307 | void |
300 | sthaw(sv) |
308 | sthaw(sv) |
301 | SV * sv |
309 | SV * sv |
302 | PROTOTYPE: $ |
310 | PROTOTYPE: $ |