ruby: don't use rb_enc_set/get on ruby 1.8

This commit is contained in:
frsyuki
2010-05-26 18:11:09 +09:00
parent 293293c23c
commit 3fbcde4bd7
2 changed files with 12 additions and 6 deletions

View File

@@ -1,7 +1,7 @@
Gem::Specification.new do |s|
s.platform = Gem::Platform::RUBY
s.name = "msgpack"
s.version = "0.4.0"
s.version = "0.4.1"
s.summary = "MessagePack, a binary-based efficient data interchange format."
s.author = "FURUHASHI Sadayuki"
s.email = "frsyuki@users.sourceforge.jp"

View File

@@ -163,15 +163,17 @@ static inline int template_callback_raw(unpack_user* u, const char* b, const cha
#endif
static VALUE template_execute_rescue(VALUE data)
#ifdef HAVE_RUBY_ENCODING_H
static VALUE template_execute_rescue_enc(VALUE data)
{
rb_gc_enable();
VALUE* resc = (VALUE*)data;
rb_enc_set_index(resc[0], (int)resc[1]);
RERAISE;
}
#endif
static VALUE template_execute_rescue_each(VALUE nouse)
static VALUE template_execute_rescue(VALUE nouse)
{
rb_gc_enable();
RERAISE;
@@ -211,10 +213,14 @@ static int template_execute_wrap(msgpack_unpack_t* mp,
mp->user.source = str;
#ifdef HAVE_RUBY_ENCODING_H
VALUE resc[2] = {str, enc_orig};
int ret = (int)rb_rescue(template_execute_do, (VALUE)args,
template_execute_rescue, (VALUE)resc);
template_execute_rescue_enc, (VALUE)resc);
#else
int ret = (int)rb_rescue(template_execute_do, (VALUE)args,
template_execute_rescue, Qnil);
#endif
rb_gc_enable();
@@ -241,7 +247,7 @@ static int template_execute_wrap_each(msgpack_unpack_t* mp,
mp->user.source = Qnil;
int ret = (int)rb_rescue(template_execute_do, (VALUE)args,
template_execute_rescue_each, Qnil);
template_execute_rescue, Qnil);
rb_gc_enable();