--- Compress-LZF/LZF.xs 2002/09/05 04:44:55 1.14 +++ Compress-LZF/LZF.xs 2002/09/05 22:00:54 1.15 @@ -257,6 +257,8 @@ || (SvTYPE(sv) != SVt_IV && SvTYPE(sv) != SVt_NV && SvTYPE(sv) != SVt_PV + && SvTYPE(sv) != SVt_PVIV + && SvTYPE(sv) != SVt_PVNV && SvTYPE(sv) != SVt_PVMG)) /* mstore */ { int deref = !SvROK (sv); @@ -293,8 +295,14 @@ XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, MAGIC_U))); /* need to prefix only */ else if (ix == 2) /* compress always */ XPUSHs (sv_2mortal (compress_sv (sv, MAGIC_C, -1))); + else if (SvNIOK (sv)) /* don't compress */ + { + STRLEN len; + char *s = SvPV (sv, len); + XPUSHs (sv_2mortal (newSVpvn (s, len))); + } else /* don't compress */ - XPUSHs (sv_2mortal (SvREFCNT_inc (sv))); + XPUSHs (sv_2mortal (newSVsv (sv))); void sthaw(sv)