summaryrefslogtreecommitdiff
path: root/cont.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-08-23 07:55:37 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-08-23 07:55:37 +0000
commit4af553f1e7a3ba8d7b668abdcf47d4f117099a65 (patch)
tree8cbccf9719162581d0a3355b7caaf343429162a6 /cont.c
parente39eb9dab50eaa681467e51145b37cdc11667830 (diff)
* cont.c (rb_cont_call, fiber_switch, rb_fiber_resume, rb_fiber_yield):
suppress warnings. * cont.c (rb_fiber_start): change on non-volatile variable between setjmp and longjmp may not has an effect. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13237 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'cont.c')
-rw-r--r--cont.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/cont.c b/cont.c
index f0b21a8ec3..99fab9dade 100644
--- a/cont.c
+++ b/cont.c
@@ -465,7 +465,7 @@ rb_cont_call(int argc, VALUE *argv, VALUE contval)
cont->value = make_passing_arg(argc, argv);
- cont_restore_0(cont, (VALUE *)&cont);
+ cont_restore_0(cont, &contval);
return Qnil; /* unreachable */
}
@@ -555,9 +555,9 @@ rb_fiber_start(void)
VALUE args;
int state;
+ GetContPtr(th->fiber, cont);
TH_PUSH_TAG(th);
if ((state = EXEC_TAG()) == 0) {
- GetContPtr(th->fiber, cont);
GetProcPtr(cont->saved_thread.first_proc, proc);
args = cont->value;
cont->value = Qnil;
@@ -651,7 +651,7 @@ fiber_switch(VALUE fib, int argc, VALUE *argv, int is_resume)
cont->value = make_passing_arg(argc, argv);
if ((value = cont_store(cont)) == Qundef) {
- cont_restore_0(cont, (VALUE *)&cont);
+ cont_restore_0(cont, &value);
rb_bug("rb_fiber_resume: unreachable");
}
@@ -669,9 +669,7 @@ rb_fiber_transfer(VALUE fib, int argc, VALUE *argv)
VALUE
rb_fiber_resume(VALUE fib, int argc, VALUE *argv)
{
- int i;
rb_context_t *cont;
- VALUE curr = rb_fiber_current();
GetContPtr(fib, cont);
if (cont->prev != Qnil) {
@@ -684,7 +682,7 @@ rb_fiber_resume(VALUE fib, int argc, VALUE *argv)
VALUE
rb_fiber_yield(int argc, VALUE *argv)
{
- rb_fiber_transfer(return_fiber(), argc, argv);
+ return rb_fiber_transfer(return_fiber(), argc, argv);
}
VALUE