naruse
c383fbf93f
* util.c (ruby_strtod): this code uses FPU's rounding system.
...
But x86's FPU calculates double precision floating-point
numbers in 80bit precision, so it fails to round the value.
So ensure the value is assigned a variable. [ruby-dev:42551]
see also [ruby-math:00802]
http://www.shudo.net/java-grandprix99/strictfp/
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-09 01:57:49 +00:00
nobu
b188d19ee0
* util.c (ruby_strtod): suppress a warning.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29727 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-08 22:28:17 +00:00
naruse
e640e1c565
* util.c (ruby_hdtoa): fix type cast and bufsize.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29720 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-08 09:28:42 +00:00
nobu
767fe5170d
* util.c (ruby_strtod): get rid of overflow/underflow as possible.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29645 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-30 08:23:40 +00:00
nobu
bd7daa5ac5
* util.c (ruby_strtod): fix indent.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29644 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-30 06:39:53 +00:00
naruse
05ba0b1dd5
* util.c (ruby_strtod): reject 0x1.p+0. [ruby-dev:42432] #3966
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29539 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-20 01:48:24 +00:00
nobu
17c48bebf8
* compile.c (iseq_build_body), insns.def (getglobal, setglobal),
...
iseq.c (iseq_load, iseq_data_to_ary), util.c (valid_filename):
use VALUE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-12 14:35:40 +00:00
naruse
2590d7447a
* util.c (ruby_strtod): reject Float('0x0.').
...
[ruby-dev:42239] Bug #3820
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-13 01:15:39 +00:00
naruse
a69423beb8
* util.c (ruby_strtod): check there is at least 1 digit after
...
"0x" before ".". [ruby-dev:42183] #3790
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29187 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-06 01:00:29 +00:00
naruse
0ed5aee000
* util.c (ruby_strtod): check integr overflow.
...
[ruby-dev:42180] #3789
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29186 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-06 00:46:48 +00:00
naruse
815ab02971
* util.c (ruby_strtod): make sure to have digit-sequence after 'p'
...
for hexadecimal-floating-constant. [ruby-dev:42105]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29073 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-23 03:19:58 +00:00
nobu
a043fb8642
From b80689141673b93e8d12968c3196ec6a2331da45 Mon Sep 17 00:00:00 2001
...
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
Date: Mon, 16 Aug 2010 18:55:11 +0900
Subject: [PATCH 2/2] * util.c (ruby_dtoa, ruby_hdtoa): use same representations for
Infinity and NaN. a part of a patch from Peter Weldon at
[ruby-core:31725].
---
util.c | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/util.c b/util.c
index 065b2f1..76ba457 100644
--- a/util.c
+++ b/util.c
@@ -3145,6 +3145,10 @@ freedtoa(char *s)
}
#endif
+static const char INFSTR[] = "Infinity";
+static const char NANSTR[] = "NaN";
+static const char ZEROSTR[] = "0";
+
/* dtoa for IEEE arithmetic (dmg): convert double to ASCII string.
*
* Inspired by "How to Print Floating-Point Numbers Accurately" by
@@ -3263,9 +3267,9 @@ ruby_dtoa(double d_, int mode, int ndigits, int *decpt, int *sign, char **rve)
*decpt = 9999;
#ifdef IEEE_Arith
if (!word1(d) && !(word0(d) & 0xfffff))
- return rv_strdup("Infinity", rve);
+ return rv_strdup(INFSTR, rve);
#endif
- return rv_strdup("NaN", rve);
+ return rv_strdup(NANSTR, rve);
}
#endif
#ifdef IBM
@@ -3273,7 +3277,7 @@ ruby_dtoa(double d_, int mode, int ndigits, int *decpt, int *sign, char **rve)
#endif
if (!dval(d)) {
*decpt = 1;
- return rv_strdup("0", rve);
+ return rv_strdup(ZEROSTR, rve);
}
#ifdef SET_INEXACT
@@ -3897,8 +3901,6 @@ ruby_each_words(const char *str, void (*func)(const char*, int, void*), void *ar
#define DBL_MANH_SIZE 20
#define DBL_MANL_SIZE 32
-#define INFSTR "Infinity"
-#define NANSTR "NaN"
#define DBL_ADJ (DBL_MAX_EXP - 2)
#define SIGFIGS ((DBL_MANT_DIG + 3) / 4 + 1)
#define dexp_get(u) ((int)(word0(u) >> Exp_shift) & ~Exp_msk1)
@@ -3959,7 +3961,7 @@ ruby_hdtoa(double d, const char *xdigs, int ndigits, int *decpt, int *sign,
}
else if (d == 0.0) { /* FP_ZERO */
*decpt = 1;
- return rv_strdup("0", rve);
+ return rv_strdup(ZEROSTR, rve);
}
else if (dexp_get(u)) { /* FP_NORMAL */
*decpt = dexp_get(u) - DBL_ADJ;
--
1.7.0.4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29011 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-16 10:23:22 +00:00
nobu
d17ff1a6a5
From 75db84d6ec7c9ef5fd05e5835ac1004df8ea7e2a Mon Sep 17 00:00:00 2001
...
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
Date: Mon, 16 Aug 2010 18:50:06 +0900
Subject: [PATCH 1/2] * util.c (ruby_hdtoa): fixed buffer overrun. based on a patch
from Peter Weldon at [ruby-core:31725].
---
util.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/util.c b/util.c
index 97b2d6c..065b2f1 100644
--- a/util.c
+++ b/util.c
@@ -3951,15 +3951,15 @@ ruby_hdtoa(double d, const char *xdigs, int ndigits, int *decpt, int *sign,
if (isinf(d)) { /* FP_INFINITE */
*decpt = INT_MAX;
- return (nrv_alloc(INFSTR, rve, sizeof(INFSTR) - 1));
+ return rv_strdup(INFSTR, rve);
}
else if (isnan(d)) { /* FP_NAN */
*decpt = INT_MAX;
- return (nrv_alloc(NANSTR, rve, sizeof(NANSTR) - 1));
+ return rv_strdup(NANSTR, rve);
}
else if (d == 0.0) { /* FP_ZERO */
*decpt = 1;
- return (nrv_alloc("0", rve, 1));
+ return rv_strdup("0", rve);
}
else if (dexp_get(u)) { /* FP_NORMAL */
*decpt = dexp_get(u) - DBL_ADJ;
--
1.7.0.4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29010 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-16 10:22:36 +00:00
nobu
0794c1da93
* util.c (ruby_add_suffix): suppress a warning.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-31 00:36:12 +00:00
nobu
7ae7ac4aba
* util.c (ruby_add_suffix): fixed a bug returning uninitialized
...
value.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-29 22:59:54 +00:00
nobu
9a89e864ea
* util.c (ruby_hdtoa): renamed from BSD__hdtoa.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-21 02:55:10 +00:00
nobu
e4820b1cfa
* util.c (ruby_add_suffix): fixed type warnings.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28664 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-17 05:10:22 +00:00
usa
09ee12bb20
* io.c (argf_inplace_mode_set): prohibits an assignment of a tainted
...
value.
* file.c (ruby_find_basename, ruby_find_extname): split from
rb_file_s_basename() and rb_file_s_extname().
* util.c (ruby_add_suffix): support arbitrary length of the suffix
to get rid of the potential buffer overflow.
reported by tarui.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-02 14:31:26 +00:00
nobu
7271a56417
* util.c (BSD__hdtoa): suppress a warning.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-01 21:59:57 +00:00
naruse
3a4c2bc034
* util.c (BSD__hdtoa): don't use C99 macros. (FP_NORMAL etc)
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27142 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-01 05:09:10 +00:00
naruse
12b2e16e21
* sprintf.c (rb_str_format): support %a format. [ruby-dev:40650]
...
* missing/vsnprintf.c (BSD_vfprintf): ditto.
* missing/vsnprintf.c (cvt): ditto.
* util.c (BSD__hdtoa): added. This is 2-clause BSDL licensed
by David Schultz and from FreeBSD.
* LEGAL: add about hdtoa() in util.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-01 04:32:57 +00:00
naruse
4d399f12d4
* object.c (rb_cstr_to_dbl): return 0.0 if hexadecimal and
...
baccheck is FALSE: Float("0x1p+0") works, but "0x1p+0".to_f
doesn't. [ruby-dev:40650]
* util.c (ruby_strtod): allow hexdecimal integers.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27140 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-01 04:32:43 +00:00
naruse
9eb68d7c44
* util.c (ruby_strtod): Add support for Hexadecimal
...
floating-point expression [ruby-dev:40650] #2969
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-17 16:21:45 +00:00
nobu
4d786d21e3
* removed spaces just before tabs.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-26 05:25:08 +00:00
akr
145f07fac2
* util.c (ruby_strtod): use dval() consistently.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25712 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-10 23:23:15 +00:00
akr
b9e0294eda
fix typos.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-03 17:46:28 +00:00
nobu
8e86bd59c0
* common.mk (bignum.o, numeric.o): depend on util.h.
...
* bignum.c, marshal.c: fixed types.
* numeric.c (infinite_value): use ruby_div0.
* include/ruby/util.h (ruby_div0): moved from marshal.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-26 04:58:15 +00:00
nobu
22cde7b682
* dir.c, dln.c, parse.y, re.c, ruby.c, sprintf.c, strftime.c,
...
string.c, util.c, variable.c: use strlcpy, memcpy and snprintf
instead of strcpy, strncpy and sprintf.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22984 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-17 01:29:17 +00:00
nobu
4de12b6ae9
* util.c (ruby_scan_oct, ruby_scan_hex): use size_t.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-14 09:25:20 +00:00
nobu
1f43321991
* util.c (ruby_each_words): assume no string exceeds INT_MAX.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22951 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-14 08:54:21 +00:00
nobu
24ccacfafd
* util.c (ruby_strdup, Balloc, rv_alloc): use size_t.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22946 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-14 05:16:03 +00:00
nobu
1f17d739ce
* util.c (ruby_qsort): the result of cmp must be signed, so get
...
rid of reuse of a variable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-14 04:53:13 +00:00
nobu
0164396029
* dln.c (init_funcname_len, dln_find_exe_r, dln_find_file_r): use
...
size_t.
* file.c (rb_stat_inspect, file_expand_path): ditto.
* util.c (ruby_qsort): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-14 01:56:15 +00:00
nobu
0f71c10acb
* util.c (rv_strdup): macro to duplicate nul-terminated string.
...
[ruby-core:22852]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22919 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-12 23:06:51 +00:00
nobu
d1abc53721
* array.c, bignum.c, dln.c, error.c, gc.c, io.c, marshal.c,
...
numeric.c, pack.c, strftime.c, string.c, thread.c, transcode.c,
transcode_data.h, util.c, variable.c, vm_dump.c,
include/ruby/encoding.h, missing/crypt.c, missing/vsnprintf.c:
suppress VC type warnings. [ruby-core:22726]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-12 09:16:15 +00:00
nobu
2e54fe9d4d
* array.c, bignum.c, gc.c, numeric.c, string.c, util.c, insns.def,
...
missing/crypt.c, missing/vsnprintf.c, : suppress warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-10 05:43:14 +00:00
nobu
cbeec45612
* util.c (ruby_dtoa): allocates one more byte to get rid of buffer
...
overrun. a patch from Charlie Savage at [ruby-core:22604].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-01 10:36:19 +00:00
akr
f252633804
* util.c: fix SEGV by test_time.rb with
...
gcc version 4.4.0 20090219 (Red Hat 4.4.0-0.21) on Fedora 11 Alpha.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-27 13:05:30 +00:00
usa
5fb7052bb9
* util.c (valid_filename): use our own implementation of open(),
...
close() and unlink().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-26 04:31:21 +00:00
nobu
12d2c8ba41
stripped trailing spaces.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22552 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-22 14:23:33 +00:00
usa
8563b285fb
* util.c (rv_alloc, freedtoa): use our normal xmalloc()/xfree() because
...
couldn't free the returned pointer from ruby_dtoa().
* missing/vsnprintf.c (cvt): receive buffer and use/return it instead
of returning the pointer returned from BSD__dtoa().
* missing/vsnprintf.c (BSD_vfprintf): pass buf to cvt() as the buffer.
[ruby-core:22184]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22471 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-20 14:29:00 +00:00
nobu
860fad971d
* thread.c (blocking_region_{begin,end}): declared as inline.
...
* util.c (freedtoa): used only when MULTIPLE_THREADS is not defined.
* win32/win32.c (rb_w32_pipe): serial is DWORD.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-26 09:01:23 +00:00
nobu
d8267b72b5
* util.c (freedtoa): made static to get rid of name clash. a patch by
...
Tadashi Saito <shiba AT mail2.accsnet.ne.jp> at [ruby-dev:36913]
* util.c (ruby_dtoa): added prefix, ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-24 18:56:31 +00:00
yugui
ae7ea3332b
* dln.c: Ruby no longer supports MS-DOS.
...
* ext/sdbm/_sdbm.c: ditto.
* ext/sdbm/sdbm.h: ditto.
* gc.c: ditto.
* hash.c: ditto.
* include/ruby/defines.h: ditto.
* include/ruby/util.h: ditto.
* io.c: ditto.
* process.c: ditto.
* ruby.c: ditto.
* strftime.c: ditto.
* util.c: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19679 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-04 13:33:22 +00:00
yugui
8dd118c0db
* djgpp/GNUmakefile.in: removed. Ruby no longer supports djgpp.
...
* djgpp/README.djgpp: ditto.
* djgpp/config.hin: ditto.
* djgpp/config.sed: ditto.
* djgpp/configure.bat: ditto.
* djgpp/mkver.sed: ditto.
* ext/Setup.dj: ditto.
* dln.c: removed djgpp supports.
* file.c: ditto.
* gc.c: ditto.
* io.c: ditto.
* process.c: ditto.
* ruby.c: ditto.
* signal.c: ditto.
* util.c: ditto.
* vm_core.h: ditto.
* lib/fileutils.rb: ditto.
* lib/mkmf.rb: ditto.
* ext/socket/socket.c: ditto.
* test/fileutils/test_fileutils.rb: ditto.
* test/ruby/test_env.rb: ditto.
* test/ruby/test_path.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19678 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-04 13:25:12 +00:00
nobu
076b6a226f
* sprintf.c, util.c (quorem, nrv_alloc, dtoa): enabled floating point
...
support.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-12 07:06:33 +00:00
wanabe
eff06d7ae6
* util.c (ruby_strtod): ruby_strtod don't allow a trailing
...
decimal point like "7.". [ruby-dev:34835] [ruby-dev:35009]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17072 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-10 08:01:09 +00:00
ko1
72ba13aa8e
* array.c, bignum.c, cont.c, dir.c, dln.c, encoding.c, enumerator.c,
...
enumerator.c (enumerator_allocate), eval_jump.c, file.c, hash.c,
io.c, load.c, pack.c, proc.c, random.c, re.c, ruby.c, st.c,
string.c, thread.c, thread_pthread.c, time.c, util.c, variable.c,
vm.c, gc.c:
allocated memory objects by xmalloc (ruby_xmalloc) should be
freed by xfree (ruby_xfree).
* ext/curses/curses.c, ext/dbm/dbm.c, ext/digest/digest.c,
ext/gdbm/gdbm.c, ext/json/ext/parser/parser.c,
ext/json/ext/parser/unicode.c, ext/openssl/ossl_cipher.c,
ext/openssl/ossl_hmac.c, ext/openssl/ossl_pkey_ec.c,
ext/sdbm/init.c, ext/strscan/strscan.c, ext/zlib/zlib.c:
ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-08 10:01:40 +00:00
nobu
0455e8ea9a
* io.c (rb_f_open), re.c (rb_reg_search), transcode.c (str_transcode):
...
suppress warnings.
* util.c (quorem, rv_alloc, nrv_alloc): only used in dtoa().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-07 12:38:03 +00:00
mame
eef10d71dd
* st.c (st_reverse_foreach): comment out unused function.
...
* util.c (dtoa): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-05 12:47:48 +00:00