summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authortake_cheeze <[email protected]>2014-04-01 01:35:40 +0900
committertake_cheeze <[email protected]>2014-04-01 01:35:40 +0900
commitb38eb72d829edc94c6a9f5d34bb6e5c102039cb5 (patch)
treef58467de93e8ebe902aed1374caa831790f976eb
parent80534b6d14f1392ab1c199f0906880d61f55ae84 (diff)
downloadmruby-b38eb72d829edc94c6a9f5d34bb6e5c102039cb5.tar.gz
mruby-b38eb72d829edc94c6a9f5d34bb6e5c102039cb5.zip
Add macro MRB_ENV_UNSHARE_STACK instead of assigning -1 directly.
-rw-r--r--include/mruby/proc.h1
-rw-r--r--mrbgems/mruby-proc-ext/src/proc.c2
-rw-r--r--src/vm.c2
3 files changed, 3 insertions, 2 deletions
diff --git a/include/mruby/proc.h b/include/mruby/proc.h
index 6d2cf516a..e72e8f7e4 100644
--- a/include/mruby/proc.h
+++ b/include/mruby/proc.h
@@ -21,6 +21,7 @@ struct REnv {
};
#define MRB_ENV_STACK_LEN(e) ((e)->flags)
+#define MRB_ENV_UNSHARE_STACK(e) ((e)->cioff = -1)
struct RProc {
MRB_OBJECT_HEADER;
diff --git a/mrbgems/mruby-proc-ext/src/proc.c b/mrbgems/mruby-proc-ext/src/proc.c
index b4744fa1b..8b6ee4740 100644
--- a/mrbgems/mruby-proc-ext/src/proc.c
+++ b/mrbgems/mruby-proc-ext/src/proc.c
@@ -17,7 +17,7 @@ mrb_proc_new_cfunc_with_env(mrb_state *mrb, mrb_func_t f, mrb_int argc, const mr
p->env = e;
mrb_gc_arena_restore(mrb, ai);
- e->cioff = -1;
+ MRB_ENV_UNSHARE_STACK(e);
MRB_ENV_STACK_LEN(e) = argc;
e->stack = (mrb_value*)mrb_malloc(mrb, sizeof(mrb_value) * argc);
for (i = 0; i < argc; ++i) {
diff --git a/src/vm.c b/src/vm.c
index e2b02a4ce..4aa9b9460 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -248,7 +248,7 @@ cipop(mrb_state *mrb)
size_t len = (size_t)MRB_ENV_STACK_LEN(e);
mrb_value *p = (mrb_value *)mrb_malloc(mrb, sizeof(mrb_value)*len);
- e->cioff = -1;
+ MRB_ENV_UNSHARE_STACK(e);
stack_copy(p, e->stack, len);
e->stack = p;
}