summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/mruby/proc.h3
-rw-r--r--mrbgems/default.gembox3
-rw-r--r--src/gc.c4
-rw-r--r--src/numeric.c2
-rw-r--r--src/proc.c2
-rw-r--r--src/symbol.c2
6 files changed, 10 insertions, 6 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
diff --git a/src/gc.c b/src/gc.c
index 4c50b11da..8bd8243f1 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -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/numeric.c b/src/numeric.c
index da15c92cc..71dadf35f 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -699,7 +699,7 @@ mrb_fixnum_mul(mrb_state *mrb, mrb_value x, mrb_value y)
if ((a != 0 && c/a != b) || !FIXABLE(c)) {
return mrb_float_value(mrb, (mrb_float)a*(mrb_float)b);
}
- return mrb_fixnum_value(c);
+ return mrb_fixnum_value((mrb_int)c);
}
return mrb_float_value(mrb, (mrb_float)a * mrb_to_flo(mrb, y));
}
diff --git a/src/proc.c b/src/proc.c
index ebdafccf8..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;
diff --git a/src/symbol.c b/src/symbol.c
index 0bcb26adf..390d69c31 100644
--- a/src/symbol.c
+++ b/src/symbol.c
@@ -68,7 +68,7 @@ sym_intern(mrb_state *mrb, const char *name, size_t len, mrb_bool lit)
sym = ++mrb->symidx;
if (mrb->symcapa < sym) {
if (mrb->symcapa == 0) mrb->symcapa = 100;
- else mrb->symcapa *= 1.2;
+ else mrb->symcapa = (size_t)(mrb->symcapa * 1.2);
mrb->symtbl = (symbol_name*)mrb_realloc(mrb, mrb->symtbl, sizeof(symbol_name)*(mrb->symcapa+1));
}
sname = &mrb->symtbl[sym];