mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-03-27 00:35:18 +01:00
fixes compatibility with Rubinius
This commit is contained in:
parent
09b47cc536
commit
71a1cb0184
@ -35,6 +35,23 @@ extern VALUE s_enc_utf8_value;
|
||||
#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 */
|
||||
#ifndef RSTRING_PTR
|
||||
#define RSTRING_PTR(s) (RSTRING(s)->ptr)
|
||||
|
@ -1,5 +1,5 @@
|
||||
require 'mkmf'
|
||||
require './version.rb'
|
||||
$CFLAGS << %[ -I.. -Wall -O4 -DMESSAGEPACK_VERSION=\\"#{MessagePack::VERSION}\\"]
|
||||
$CFLAGS << %[ -I.. -Wall -O4 -DMESSAGEPACK_VERSION=\\"#{MessagePack::VERSION}\\" -g]
|
||||
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
|
||||
*
|
||||
@ -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)
|
||||
{
|
||||
ARG_BUFFER(out, argc, argv);
|
||||
if(RBIGNUM_SIGN(self)) { // positive
|
||||
if(RBIGNUM_POSITIVE_P(self)) {
|
||||
msgpack_pack_uint64(out, rb_big2ull(self));
|
||||
} else { // negative
|
||||
} else {
|
||||
msgpack_pack_int64(out, rb_big2ll(self));
|
||||
}
|
||||
return out;
|
||||
|
Loading…
x
Reference in New Issue
Block a user