From e640e1c56543f12795813e4eca0890751d3764a0 Mon Sep 17 00:00:00 2001 From: naruse Date: Mon, 8 Nov 2010 09:28:42 +0000 Subject: * 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 --- ChangeLog | 4 ++++ util.c | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2d79074289..57afa14923 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Mon Nov 8 18:26:03 2010 NARUSE, Yui + + * util.c (ruby_hdtoa): fix type cast and bufsize. + Mon Nov 8 15:40:56 2010 NARUSE, Yui * vsnprintf.c (BSD_vfprintf): fix precision specifier doesn't diff --git a/util.c b/util.c index 99b8a3fd9b..db6f83f610 100644 --- a/util.c +++ b/util.c @@ -3934,8 +3934,8 @@ ruby_each_words(const char *str, void (*func)(const char*, int, void*), void *ar #define SIGFIGS ((DBL_MANT_DIG + 3) / 4 + 1) #define dexp_get(u) ((int)(word0(u) >> Exp_shift) & ~Exp_msk1) #define dexp_set(u,v) (word0(u) = (((int)(word0(u)) & ~Exp_mask) | (v << Exp_shift))) -#define dmanh_get(u) ((int)(word0(u) & Frac_mask)) -#define dmanl_get(u) ((int)word1(u)) +#define dmanh_get(u) ((uint32_t)(word0(u) & Frac_mask)) +#define dmanl_get(u) ((uint32_t)word1(u)) /* @@ -4008,7 +4008,7 @@ ruby_hdtoa(double d, const char *xdigs, int ndigits, int *decpt, int *sign, * enough space for all the digits. */ bufsize = (ndigits > 0) ? ndigits : SIGFIGS; - s0 = rv_alloc(bufsize); + s0 = rv_alloc(bufsize+1); /* Round to the desired number of digits. */ if (SIGFIGS > ndigits && ndigits > 0) { -- cgit v1.2.3