Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit dabc903

Browse files
committed
merge revision(s) 43775: [Fixes GH-457]
#457 * util.c (ruby_strtod): ignore too long fraction part, which does not affect the result. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@44351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent 469d4b9 commit dabc903

File tree

3 files changed

+22
-7
lines changed

3 files changed

+22
-7
lines changed

ChangeLog

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
Fri Nov 22 12:43:52 2013 Nobuyoshi Nakada <[email protected]>
2+
3+
* util.c (ruby_strtod): ignore too long fraction part, which does not
4+
affect the result.
5+
16
Thu Jun 27 20:55:23 2013 URABE Shyouhei <[email protected]>
27

38
* test/openssl/test_ssl.rb: Oops, sorry!

util.c

+12-2
Original file line numberDiff line numberDiff line change
@@ -892,6 +892,11 @@ extern void *MALLOC(size_t);
892892
#else
893893
#define MALLOC malloc
894894
#endif
895+
#ifdef FREE
896+
extern void FREE(void*);
897+
#else
898+
#define FREE free
899+
#endif
895900

896901
#ifndef Omit_Private_Memory
897902
#ifndef PRIVATE_MEM
@@ -1176,7 +1181,7 @@ Balloc(int k)
11761181
#endif
11771182

11781183
ACQUIRE_DTOA_LOCK(0);
1179-
if ((rv = freelist[k]) != 0) {
1184+
if (k <= Kmax && (rv = freelist[k]) != 0) {
11801185
freelist[k] = rv->next;
11811186
}
11821187
else {
@@ -1186,7 +1191,7 @@ Balloc(int k)
11861191
#else
11871192
len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)
11881193
/sizeof(double);
1189-
if (pmem_next - private_mem + len <= PRIVATE_mem) {
1194+
if (k <= Kmax && pmem_next - private_mem + len <= PRIVATE_mem) {
11901195
rv = (Bigint*)pmem_next;
11911196
pmem_next += len;
11921197
}
@@ -1205,6 +1210,10 @@ static void
12051210
Bfree(Bigint *v)
12061211
{
12071212
if (v) {
1213+
if (v->k > Kmax) {
1214+
FREE(v);
1215+
return;
1216+
}
12081217
ACQUIRE_DTOA_LOCK(0);
12091218
v->next = freelist[v->k];
12101219
freelist[v->k] = v;
@@ -2200,6 +2209,7 @@ ruby_strtod(const char *s00, char **se)
22002209
for (; c >= '0' && c <= '9'; c = *++s) {
22012210
have_dig:
22022211
nz++;
2212+
if (nf > DBL_DIG * 2) continue;
22032213
if (c -= '0') {
22042214
nf += nz;
22052215
for (i = 1; i < nz; i++)

version.h

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#define RUBY_VERSION "1.8.7"
2-
#define RUBY_RELEASE_DATE "2013-06-27"
2+
#define RUBY_RELEASE_DATE "2013-12-22"
33
#define RUBY_VERSION_CODE 187
4-
#define RUBY_RELEASE_CODE 20130627
5-
#define RUBY_PATCHLEVEL 374
4+
#define RUBY_RELEASE_CODE 20131222
5+
#define RUBY_PATCHLEVEL 375
66

77
#define RUBY_VERSION_MAJOR 1
88
#define RUBY_VERSION_MINOR 8
99
#define RUBY_VERSION_TEENY 7
1010
#define RUBY_RELEASE_YEAR 2013
11-
#define RUBY_RELEASE_MONTH 6
12-
#define RUBY_RELEASE_DAY 27
11+
#define RUBY_RELEASE_MONTH 12
12+
#define RUBY_RELEASE_DAY 22
1313

1414
#ifdef RUBY_EXTERN
1515
RUBY_EXTERN const char ruby_version[];

0 commit comments

Comments
 (0)