diff options
author | Florian Frank <flori@ping.de> | 2010-04-25 15:43:47 +0200 |
---|---|---|
committer | Florian Frank <flori@ping.de> | 2010-04-25 15:43:47 +0200 |
commit | d34d8a2195b480abae68ea427be60767793b6196 (patch) | |
tree | 26b4fb066740b31d0b05a2b65a404e4797957784 /ext/json | |
parent | 590ac112a95dd5ce30e52fcf4db17df3a1ed6721 (diff) | |
download | json-1.4.1.tar.gz |
Fixed T_FIXNUM bug on 64bit architectures.v1.4.1
Diffstat (limited to 'ext/json')
-rw-r--r-- | ext/json/ext/generator.c | 12 | ||||
-rw-r--r-- | ext/json/ext/generator.h | 2 |
2 files changed, 7 insertions, 7 deletions
diff --git a/ext/json/ext/generator.c b/ext/json/ext/generator.c index 05e0f7d..555fcce 100644 --- a/ext/json/ext/generator.c +++ b/ext/json/ext/generator.c @@ -367,10 +367,10 @@ static void freverse(char *start, char *end) } } -static int fitoa(int number, char *buf) +static int fltoa(long number, char *buf) { static char digits[] = "0123456789"; - int sign = number; + long sign = number; char* tmp = buf; if (sign < 0) number = -number; @@ -380,10 +380,10 @@ static int fitoa(int number, char *buf) return tmp - buf; } -static void fbuffer_append_integer(FBuffer *fb, int number) +static void fbuffer_append_long(FBuffer *fb, long number) { - char buf[12]; - int len = fitoa(number, buf); + char buf[20]; + int len = fltoa(number, buf); fbuffer_append(fb, buf, len); } @@ -841,7 +841,7 @@ static void generate_json(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *s fbuffer_append(buffer, "true", 4); break; case T_FIXNUM: - fbuffer_append_integer(buffer, FIX2INT(obj)); + fbuffer_append_long(buffer, FIX2LONG(obj)); break; case T_BIGNUM: tmp = rb_funcall(obj, i_to_s, 0); diff --git a/ext/json/ext/generator.h b/ext/json/ext/generator.h index 72d7c8a..37240a9 100644 --- a/ext/json/ext/generator.h +++ b/ext/json/ext/generator.h @@ -70,7 +70,7 @@ static void fbuffer_free(FBuffer *fb); static void fbuffer_free_only_buffer(FBuffer *fb); static void fbuffer_clear(FBuffer *fb); static void fbuffer_append(FBuffer *fb, const char *newstr, unsigned int len); -static void fbuffer_append_integer(FBuffer *fb, int number); +static void fbuffer_append_long(FBuffer *fb, long number); static void fbuffer_append_char(FBuffer *fb, char newchr); static FBuffer *fbuffer_dup(FBuffer *fb); |