if(SvIOKp(sv)){
return TRUE;
}
- else if(SvNOKp(sv)){
+ else if(SvNOKp(sv)) {
NV const nv = SvNVX(sv);
- return nv > 0 ? (nv == (NV)(UV)nv) : (nv == (NV)(IV)nv);
+ NV mod = Perl_fmod( nv, 1 );
+ return mod == 0;
}
else if(SvPOKp(sv)){
int const num_type = grok_number(SvPVX(sv), SvCUR(sv), NULL);
I32 len;
I32 i;
- SvGETMAGIC(methods);
- if(!IsArrayRef(methods)){
- croak("You must pass an ARRAY ref method names");
- }
+ must_ref(methods, "an ARRAY ref for method names", SVt_PVAV);
av = (AV*)SvRV(methods);
len = av_len(av) + 1;