summaryrefslogtreecommitdiff
path: root/pp_pack.c
diff options
context:
space:
mode:
Diffstat (limited to 'pp_pack.c')
-rw-r--r--pp_pack.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/pp_pack.c b/pp_pack.c
index aa3e790db3..7928315eb1 100644
--- a/pp_pack.c
+++ b/pp_pack.c
@@ -2167,13 +2167,16 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )
fromstr = PEEKFROM;
if (SvNOK(fromstr)) {
const NV nv = SvNV(fromstr);
- const char c = TYPE_NO_MODIFIERS(datumtype);
- if (Perl_isinfnan(nv) && !strchr("fdFD", c)) {
- if (c == 'w')
- Perl_croak(aTHX_ "Cannot compress %"NVgf" in pack", nv);
- else
- Perl_croak(aTHX_ "Cannot pack %"NVgf" with '%c'",
- nv, (int) c);
+ if (UNLIKELY(Perl_isinfnan(nv))) {
+ const I32 c = TYPE_NO_MODIFIERS(datumtype);
+ if (!strchr("fdFD", (char)c)) { /* floats are okay */
+ if (c == 'w')
+ Perl_croak(aTHX_
+ "Cannot compress %"NVgf" in pack", nv);
+ else
+ Perl_croak(aTHX_ "Cannot pack %"NVgf" with '%c'",
+ nv, (int) c);
+ }
}
}