mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-25 02:06:05 +02:00
fixes compatibility with Rubinius
This commit is contained in:
@@ -35,6 +35,23 @@ extern VALUE s_enc_utf8_value;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* ruby 1.8 and Rubinius */
|
||||||
|
#ifndef RBIGNUM_POSITIVE_P
|
||||||
|
# ifdef RUBINIUS
|
||||||
|
# define RBIGNUM_POSITIVE_P(b) (rb_funcall(b, rb_intern(">="), 1, INT2FIX(0)) == Qtrue)
|
||||||
|
# else
|
||||||
|
# define RBIGNUM_POSITIVE_P(b) (RBIGNUM(b)->sign)
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Rubinius */
|
||||||
|
#ifdef RUBINIUS
|
||||||
|
static inline void rb_gc_enable() { return; }
|
||||||
|
static inline void rb_gc_disable() { return; }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* ruby 1.8.5 */
|
/* ruby 1.8.5 */
|
||||||
#ifndef RSTRING_PTR
|
#ifndef RSTRING_PTR
|
||||||
#define RSTRING_PTR(s) (RSTRING(s)->ptr)
|
#define RSTRING_PTR(s) (RSTRING(s)->ptr)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
require 'mkmf'
|
require 'mkmf'
|
||||||
require './version.rb'
|
require './version.rb'
|
||||||
$CFLAGS << %[ -I.. -Wall -O4 -DMESSAGEPACK_VERSION=\\"#{MessagePack::VERSION}\\"]
|
$CFLAGS << %[ -I.. -Wall -O4 -DMESSAGEPACK_VERSION=\\"#{MessagePack::VERSION}\\" -g]
|
||||||
create_makefile('msgpack')
|
create_makefile('msgpack')
|
||||||
|
|
||||||
|
|||||||
@@ -118,10 +118,6 @@ static VALUE MessagePack_Fixnum_to_msgpack(int argc, VALUE *argv, VALUE self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifndef RBIGNUM_SIGN // Ruby 1.8
|
|
||||||
#define RBIGNUM_SIGN(b) (RBIGNUM(b)->sign)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Document-method: Bignum#to_msgpack
|
* Document-method: Bignum#to_msgpack
|
||||||
*
|
*
|
||||||
@@ -133,9 +129,9 @@ static VALUE MessagePack_Fixnum_to_msgpack(int argc, VALUE *argv, VALUE self)
|
|||||||
static VALUE MessagePack_Bignum_to_msgpack(int argc, VALUE *argv, VALUE self)
|
static VALUE MessagePack_Bignum_to_msgpack(int argc, VALUE *argv, VALUE self)
|
||||||
{
|
{
|
||||||
ARG_BUFFER(out, argc, argv);
|
ARG_BUFFER(out, argc, argv);
|
||||||
if(RBIGNUM_SIGN(self)) { // positive
|
if(RBIGNUM_POSITIVE_P(self)) {
|
||||||
msgpack_pack_uint64(out, rb_big2ull(self));
|
msgpack_pack_uint64(out, rb_big2ull(self));
|
||||||
} else { // negative
|
} else {
|
||||||
msgpack_pack_int64(out, rb_big2ll(self));
|
msgpack_pack_int64(out, rb_big2ll(self));
|
||||||
}
|
}
|
||||||
return out;
|
return out;
|
||||||
|
|||||||
Reference in New Issue
Block a user