Subject: | XML::Compile::Schema::BuiltInFacets::_maybe_big reports 9999999.99 as NaN |
Date: | Thu, 2 May 2013 09:55:33 -0500 (CDT) |
To: | <bug-XML-Compile [...] rt.cpan.org> |
From: | James Davis <jamdavis [...] franklinamerican.com> |
This is using XML::Compile::Schema::BuiltInFacets v1.32 on 32-bit perl
5.10.1.
It seems to work properly on 64-bit perl 5.16.1, but I suspect it's the
"64-bit" part that's important.
For testing, I copied _maybe_big into a separate file and passed it the
following:
say _maybe_big(undef, {}, "999999.99");
say _maybe_big(undef, {}, "9999999.99");
Result:
999999.99
NaN
It looks like the first test for [.eE] is succeeding, but the number's
short enough to not require Math::BigFloat -- so it falls through to the
next if/else and tries to return a Math::BigInt for 9999999.99. It looks
like changing that second if to an elsif would do the trick, but it's
likely I haven't thought this through sufficiently.
perl -V output:
------------------------------
Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
Platform:
osname=linux, osvers=2.6.24-28-server,
archname=i486-linux-gnu-thread-multi
uname='linux roseapple 2.6.24-28-server #1 smp wed aug 18 21:17:51 utc
2010 i686 gnulinux '
config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN
-Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr
-Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10
-Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5
-Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local
-Dsitelib=/usr/local/share/perl/5.10.1
-Dsitearch=/usr/local/lib/perl/5.10.1 -Dman1dir=/usr/share/man/man1
-Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1
-Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl
-Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm
-DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.1
-Dd_dosuid -des'
hint=recommended, useposix=true, d_sigaction=define
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=undef, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN
-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2 -g',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing
-pipe -fstack-protector -I/usr/local/include'
ccversion='', gccversion='4.4.3', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=4, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib /usr/lib64
libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
perllibs=-ldl -lm -lpthread -lc -lcrypt
libc=/lib/libc-2.11.1.so, so=so, useshrplib=true,
libperl=libperl.so.5.10.1
gnulibc_version='2.11.1'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib
-fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
USE_ITHREADS
USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API
Built under linux
Compiled at Apr 22 2011 18:17:20
%ENV:
PERL5LIB="/home/bna/jamdavis/perl5/lib/perl5"
PERLDB_OPTS="windowSize=40"
PERL_CPANM_OPT="--local-lib=~/perl5"
@INC:
/home/bna/jamdavis/perl5/lib/perl5/i486-linux-gnu-thread-multi
/home/bna/jamdavis/perl5/lib/perl5
/etc/perl
/usr/local/lib/perl/5.10.1
/usr/local/share/perl/5.10.1
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.10
/usr/share/perl/5.10
/usr/local/lib/site_perl
------------------------------
James Davis
Show quoted text
______________________________________________________________________
The information contained in and transmitted with this communication is strictly confidential, is intended only for use of the intended recipient, and is the property of Franklin American Mortgage Company. If you are not the intended recipient, you are hereby notified that any use of the information contained in or transmitted with the communication or distribution, dissemination or copying of this communication is strictly prohibited by law. If you have received this communication in error, please immediately return this communication to the Sender and delete the original message and any copy of it in your possession.