summaryrefslogtreecommitdiff
path: root/util.c
AgeCommit message (Collapse)Author
2013-07-03* internal.h (ruby_digit36_to_number_table): Declared.akr
* util.c (ruby_digit36_to_number_table): Moved from scan_digits. * bignum.c (conv_digit): Use ruby_digit36_to_number_table. * pack.c (hex2num): Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41757 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-01util.c: constifynobu
* util.c (scan_digits): constify readonly table. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41730 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-22* util.c (ruby_hdtoa): revert r29729.naruse
If you want ruby to behave as before on x86, specify to use SSE like -msse2 -mfpmath=sse for gcc. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-17Imports Ruby's port to NativeClient (a.k.a NaCl).yugui
Patch by Google Inc. [ruby-core:45073]. * configure.in (RUBY_NACL): New M4 func to configure variables for NaCl. (RUBY_NACL_CHECK_PEPPER_TYPES): New M4 func to check the old names of Pepper interface types. (BTESTRUBY): New variable to specify which ruby should be run on "make btest". NaCl can run the built binary by sel_ldr, but it need rbconfig.rb. So this variable is distinguished from $MINIRUBY. * thread_pthread.c: Disabled some features on NaCl. * io.c: ditto. * process.c: ditto. * signal.c: ditto. * file.c: ditto. * missing/flock.c: ditto. * nacl/pepper_main.c: An example implementation of Pepper application that embeds Ruby. * nacl/example.html: An example of web page that uses the Pepper application. * nacl/nacl-config.rb: Detects variants of NaCl SDK. * nacl/GNUmakefile.in: Makefile template for NaCl specific build process. * nacl/package.rb: script for packaging a NaCl-Ruby embedding application. * nacl/reate_nmf.rb: Wrapper script of create_nmf.py * dln.c (dln_load): Added a hack to call on NaCl. * util.c (ruby_getcwd): Path to the current directort is not available on NaCl. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15* util.c (ruby_strtod): no need to check same digit for hexdigitnobu
twice. [ruby-dev:45363][Bug #6146] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35035 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-22* ext/bigdecimal/bigdecimal.h: add satisfy cc-mode comment.kazu
* util.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34104 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-20* util.c (mmprepare): fix for fragmental size.nobu
* util.c (mmswap_, mmrot3_): portability improvement. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33489 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-03* util.c, include/ruby/util.h (ruby_add_suffix): remove the function.usa
[Bug #5153] [ruby-core:38736] * io.c (argf_next_argv): remove the call of above function. * ext/-test-/add_suffix, test/-ext-/test_add_suffix.rb: remove the test extension module because this is only for testsing ruby_add_suffix(). * LEGAL: remove the mention about a part of util.c, because now we removed the part. * io.c (argf_next_argv): now the new filename is not guranteed to use, so should check the return value of rename(2). * test/ruby/test_argf.rb (TestArgf#test_inplace_rename_impossible): now we expect same result with other platforms on no_safe_rename platforms (=Windows). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-10* thread_pthread.c (mutex_debug): use exit(EXIT_FAILURE) instad ofkosaki
exit(1). * thread_pthread.c (add_signal_thread_list): ditto. * thread.c (rb_thread_call_with_gvl): ditto. * util.c (Bug): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-18* internal.h: declare more internal functions.akr
* iseq.h (rb_method_get_iseq): declared. * compile.c, eval.c, eval_error.c, iseq.c, parse.y, proc.c, range.c, ruby.c, time.c, util.c, vm.c: don't declare internal functions. * eval.c, parse.y, thread_pthread.c: non-existing function declarations removed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32158 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-10* util.c: parenthesize macro arguments.akr
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-09* util.c (ruby_strtod): this code uses FPU's rounding system.naruse
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-08 * util.c (ruby_strtod): suppress a warning.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29727 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-08* util.c (ruby_hdtoa): fix type cast and bufsize.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29720 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-30* util.c (ruby_strtod): get rid of overflow/underflow as possible.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29645 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-30* util.c (ruby_strtod): fix indent.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29644 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-20* util.c (ruby_strtod): reject 0x1.p+0. [ruby-dev:42432] #3966naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29539 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-12* compile.c (iseq_build_body), insns.def (getglobal, setglobal),nobu
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-09-13* util.c (ruby_strtod): reject Float('0x0.').naruse
[ruby-dev:42239] Bug #3820 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-06* util.c (ruby_strtod): check there is at least 1 digit afternaruse
"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* util.c (ruby_strtod): check integr overflow.naruse
[ruby-dev:42180] #3789 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29186 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-23* util.c (ruby_strtod): make sure to have digit-sequence after 'p'naruse
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-16From b80689141673b93e8d12968c3196ec6a2331da45 Mon Sep 17 00:00:00 2001nobu
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-16From 75db84d6ec7c9ef5fd05e5835ac1004df8ea7e2a Mon Sep 17 00:00:00 2001nobu
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-07-31* util.c (ruby_add_suffix): suppress a warning.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-29* util.c (ruby_add_suffix): fixed a bug returning uninitializednobu
value. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-21* util.c (ruby_hdtoa): renamed from BSD__hdtoa.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-17* util.c (ruby_add_suffix): fixed type warnings.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28664 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-02* io.c (argf_inplace_mode_set): prohibits an assignment of a taintedusa
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-04-01* util.c (BSD__hdtoa): suppress a warning.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-01* util.c (BSD__hdtoa): don't use C99 macros. (FP_NORMAL etc)naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27142 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-01* sprintf.c (rb_str_format): support %a format. [ruby-dev:40650]naruse
* 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* object.c (rb_cstr_to_dbl): return 0.0 if hexadecimal andnaruse
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-03-17* util.c (ruby_strtod): Add support for Hexadecimalnaruse
floating-point expression [ruby-dev:40650] #2969 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-26* removed spaces just before tabs.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-10* util.c (ruby_strtod): use dval() consistently.akr
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25712 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-03fix typos.akr
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-26* common.mk (bignum.o, numeric.o): depend on util.h.nobu
* 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-03-17* dir.c, dln.c, parse.y, re.c, ruby.c, sprintf.c, strftime.c,nobu
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-14* util.c (ruby_scan_oct, ruby_scan_hex): use size_t.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-14* util.c (ruby_each_words): assume no string exceeds INT_MAX.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22951 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-14* util.c (ruby_strdup, Balloc, rv_alloc): use size_t.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22946 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-14* util.c (ruby_qsort): the result of cmp must be signed, so getnobu
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* dln.c (init_funcname_len, dln_find_exe_r, dln_find_file_r): usenobu
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-12* util.c (rv_strdup): macro to duplicate nul-terminated string.nobu
[ruby-core:22852] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22919 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-12* array.c, bignum.c, dln.c, error.c, gc.c, io.c, marshal.c,nobu
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-10* array.c, bignum.c, gc.c, numeric.c, string.c, util.c, insns.def,nobu
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-01* util.c (ruby_dtoa): allocates one more byte to get rid of buffernobu
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-02-27* util.c: fix SEGV by test_time.rb withakr
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-26 * util.c (valid_filename): use our own implementation of open(),usa
close() and unlink(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e