From ecfff9d26446be99bcff5743fd1d9a504ea3f230 Mon Sep 17 00:00:00 2001 From: wyhaines Date: Tue, 14 Jul 2009 15:05:27 +0000 Subject: Fixes to bignum/numeric so that infinity is always greater than any num. configure.in fixes to earlier breakage regarding using $libdir for determining lib dirs, instead of $prefix/lib. git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8_6@24107 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ bignum.c | 10 +++++++++- configure.in | 8 ++++++-- numeric.c | 4 ++++ version.h | 6 +----- 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 555579993..eab125d21 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Mon Jul 13 12:00:00 2009 Kirk Haines + + * numeric.c, bignum.c: Applied changes from r23730. Infinity is > any bignum number in comparisons. + + * configure.in: fixed problems with using $libdir instead of $prefix/lib for RUBY_LIB and friends. + Fri Jul 10 04:00:00 2009 Kirk Haines * file.c: Added FCNTL inclusion to fix a compile error with solaris (backport from r22812) diff --git a/bignum.c b/bignum.c index c23b76b1f..6e0da90c7 100644 --- a/bignum.c +++ b/bignum.c @@ -987,7 +987,15 @@ rb_big_cmp(x, y) break; case T_FLOAT: - return rb_dbl_cmp(rb_big2dbl(x), RFLOAT(y)->value); + { + double a = RFLOAT(y)->value; + + if (isinf(a)) { + if (a > 0.0) return INT2FIX(-1); + else return INT2FIX(1); + } + return rb_dbl_cmp(rb_big2dbl(x), a); + } default: return rb_num_coerce_cmp(x, y); diff --git a/configure.in b/configure.in index bd0763831..312a842a8 100644 --- a/configure.in +++ b/configure.in @@ -1323,6 +1323,10 @@ if test "$prefix" = NONE; then prefix=$ac_default_prefix fi +if test "$exec_prefix" = NONE; then + exec_prefix=$prefix +fi + #if test "$fat_binary" != no ; then # CFLAGS="$CFLAGS $ARCH_FLAG" #fi @@ -1614,7 +1618,7 @@ case "$target_os" in RUBY_LIB_PREFIX="/lib/ruby" ;; *) - RUBY_LIB_PREFIX="${libdir}/ruby" + RUBY_LIB_PREFIX="`eval "echo ${libdir}"`/ruby" ;; esac RUBY_LIB_PATH="${RUBY_LIB_PREFIX}/${MAJOR}.${MINOR}" @@ -1622,7 +1626,7 @@ RUBY_LIB_PATH="${RUBY_LIB_PREFIX}/${MAJOR}.${MINOR}" AC_ARG_WITH(sitedir, [ --with-sitedir=DIR site libraries in DIR [PREFIX/lib/ruby/site_ruby]], [sitedir=$withval], - [sitedir='${libdir}/ruby/site_ruby']) + [sitedir="`eval "echo ${libdir}"`/lib/ruby/site_ruby"]) SITE_DIR=`eval echo \\"${sitedir}\\"` case "$target_os" in cygwin*|mingw*|*djgpp*|os2-emx*) diff --git a/numeric.c b/numeric.c index 21a4f2af4..c5e64c9b9 100644 --- a/numeric.c +++ b/numeric.c @@ -933,6 +933,10 @@ flo_cmp(x, y) break; case T_BIGNUM: + if (isinf(a)) { + if (a > 0.0) return INT2FIX(1); + else return INT2FIX(-1); + } b = rb_big2dbl(y); break; diff --git a/version.h b/version.h index 8e57c62b6..3998543cd 100644 --- a/version.h +++ b/version.h @@ -2,7 +2,7 @@ #define RUBY_RELEASE_DATE "2009-06-08" #define RUBY_VERSION_CODE 186 #define RUBY_RELEASE_CODE 20090608 -#define RUBY_PATCHLEVEL 378 +#define RUBY_PATCHLEVEL 379 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 @@ -18,7 +18,3 @@ RUBY_EXTERN const char ruby_platform[]; RUBY_EXTERN const int ruby_patchlevel; #endif - - - - -- cgit