diff options
| -rw-r--r-- | include/mruby/proc.h | 3 | ||||
| -rw-r--r-- | mrbgems/default.gembox | 3 | ||||
| -rw-r--r-- | src/gc.c | 4 | ||||
| -rw-r--r-- | src/proc.c | 4 |
4 files changed, 9 insertions, 5 deletions
diff --git a/include/mruby/proc.h b/include/mruby/proc.h index fe5a1d2f6..5441cf767 100644 --- a/include/mruby/proc.h +++ b/include/mruby/proc.h @@ -20,7 +20,8 @@ struct REnv { ptrdiff_t cioff; }; -#define MRB_ENV_STACK_LEN(e) ((e)->flags) +#define MRB_SET_ENV_STACK_LEN(e,len) (e)->flags = (unsigned int)(len) +#define MRB_ENV_STACK_LEN(e) ((mrb_int)(e)->flags) #define MRB_ENV_UNSHARE_STACK(e) ((e)->cioff = -1) #define MRB_ENV_STACK_SHARED_P(e) ((e)->cioff >= 0) diff --git a/mrbgems/default.gembox b/mrbgems/default.gembox index 06609d9e7..7518242ed 100644 --- a/mrbgems/default.gembox +++ b/mrbgems/default.gembox @@ -70,4 +70,7 @@ MRuby::GemBox.new do |conf| # Use extensional Kernel module conf.gem :core => "mruby-kernel-ext" + + # Use extensional Kernel module + conf.gem :github => "matz/mruby-thread" end @@ -532,9 +532,9 @@ gc_mark_children(mrb_state *mrb, struct RBasic *obj) struct REnv *e = (struct REnv*)obj; if (!MRB_ENV_STACK_SHARED_P(e)) { - int i, len; + mrb_int i, len; - len = (int)MRB_ENV_STACK_LEN(e); + len = MRB_ENV_STACK_LEN(e); for (i=0; i<len; i++) { mrb_gc_mark_value(mrb, e->stack[i]); } diff --git a/src/proc.c b/src/proc.c index 4ece3c9e9..e1d1d138d 100644 --- a/src/proc.c +++ b/src/proc.c @@ -40,7 +40,7 @@ env_new(mrb_state *mrb, int nlocals) struct REnv *e; e = (struct REnv*)mrb_obj_alloc(mrb, MRB_TT_ENV, (struct RClass*)mrb->c->ci->proc->env); - MRB_ENV_STACK_LEN(e) = (unsigned int)nlocals; + MRB_SET_ENV_STACK_LEN(e, nlocals); e->mid = mrb->c->ci->mid; e->cioff = mrb->c->ci - mrb->c->cibase; e->stack = mrb->c->stack; @@ -126,7 +126,7 @@ mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx) if (!e) { mrb_raise(mrb, E_TYPE_ERROR, "Can't get cfunc env from cfunc Proc without REnv."); } - if (idx < 0 || (mrb_int)MRB_ENV_STACK_LEN(e) <= idx) { + if (idx < 0 || MRB_ENV_STACK_LEN(e) <= idx) { mrb_raisef(mrb, E_INDEX_ERROR, "Env index out of range: %S (expected: 0 <= index < %S)", mrb_fixnum_value(idx), mrb_fixnum_value(MRB_ENV_STACK_LEN(e))); } |
