summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/mruby/data.h6
-rw-r--r--src/object.c12
-rw-r--r--tasks/mruby_build_gem.rake2
3 files changed, 7 insertions, 13 deletions
diff --git a/include/mruby/data.h b/include/mruby/data.h
index ed49393f7..6492fd6ea 100644
--- a/include/mruby/data.h
+++ b/include/mruby/data.h
@@ -28,10 +28,10 @@ struct RData *mrb_data_object_alloc(mrb_state *mrb, struct RClass* klass, void *
#define Data_Wrap_Struct(mrb,klass,type,ptr)\
mrb_data_object_alloc(mrb,klass,ptr,type)
-#define Data_Make_Struct(mrb,klass,strct,type,sval) (\
+#define Data_Make_Struct(mrb,klass,strct,type,sval,data) (\
sval = mrb_malloc(mrb, sizeof(strct)),\
- { static const strct zero = { 0 }; *sval = zero},\
- Data_Wrap_Struct(mrb,klass,type,sval)\
+ { static const strct zero = { 0 }; *sval = zero; },\
+ data = Data_Wrap_Struct(mrb,klass,type,sval)\
)
#define RDATA(obj) ((struct RData *)((obj).value.p))
diff --git a/src/object.c b/src/object.c
index f8ebd44bc..cc8475cf1 100644
--- a/src/object.c
+++ b/src/object.c
@@ -10,6 +10,7 @@
#include <stdio.h>
#include "mruby/class.h"
#include "mruby/numeric.h"
+#include "error.h"
int
mrb_obj_eq(mrb_state *mrb, mrb_value v1, mrb_value v2)
@@ -443,16 +444,7 @@ mrb_value
mrb_any_to_s(mrb_state *mrb, mrb_value obj)
{
const char *cname = mrb_obj_classname(mrb, obj);
- size_t len;
- mrb_value str;
- struct RString *s;
-
- len = strlen(cname)+6+16;
- str = mrb_str_new(mrb, 0, len); /* 6:tags 16:addr */
- s = mrb_str_ptr(str);
- s->len = sprintf(s->ptr, "#<%s:0x%lx>", cname, (unsigned long)(obj.value.p));
-
- return str;
+ return mrb_sprintf(mrb, "#<%s:%p>", cname, mrb_voidp(obj));
}
/*
diff --git a/tasks/mruby_build_gem.rake b/tasks/mruby_build_gem.rake
index 80990773d..69dd4cafc 100644
--- a/tasks/mruby_build_gem.rake
+++ b/tasks/mruby_build_gem.rake
@@ -5,7 +5,9 @@ module MRuby
gemrake = File.join(gemdir, "mrbgem.rake")
fail "Can't find #{gemrake}" unless File.exists?(gemrake)
+ Gem.current = nil
load gemrake
+ return nil unless Gem.current
Gem.current.dir = gemdir
Gem.current.build = MRuby::Build.current