[#144] Another implementation of Bignum — "Dmitry Antipov" <dmitry.antipov@...>

Hello Ruby hackers,

15 messages 2002/06/06

Re: possible bug: stack dump with <<-String, #{...} and large loops

From: ts <decoux@...>
Date: 2002-06-05 06:45:30 UTC
List: ruby-core #137
>>>>> "t" == ts  <decoux@moulon.inra.fr> writes:

t>  and with this ?

 and the same for FLIP3 :-(

pigeon% diff -u eval.c~ eval.c
--- eval.c~     Wed Jun  5 07:25:11 2002
+++ eval.c      Wed Jun  5 08:39:31 2002
@@ -2649,7 +2649,10 @@
       case NODE_FLIP2:         /* like AWK */
        {
            VALUE *flip = rb_svar(node->nd_cnt);
-           if (!flip) rb_bug("unexpected local variable");
+           if (!flip) {
+                special_local_set(node->nd_cnt, Qnil);
+                flip = &ruby_scope->local_vars[node->nd_cnt];
+           }
            if (!RTEST(*flip)) {
                if (RTEST(rb_eval(self, node->nd_beg))) {
                    *flip = RTEST(rb_eval(self, node->nd_end))?Qfalse:Qtrue;
@@ -2671,7 +2674,10 @@
       case NODE_FLIP3:         /* like SED */
        {
            VALUE *flip = rb_svar(node->nd_cnt);
-           if (!flip) rb_bug("unexpected local variable");
+           if (!flip) {
+                special_local_set(node->nd_cnt, Qnil);
+                flip = &ruby_scope->local_vars[node->nd_cnt];
+           }
            if (!RTEST(*flip)) {
                result = RTEST(rb_eval(self, node->nd_beg)) ? Qtrue : Qfalse;
                *flip = result;
pigeon% 
   

Guy Decoux


In This Thread