Hi,

At Thu, 20 Jul 2006 01:11:09 +0900,
John Fletcher wrote in [ruby-core:08290]:
> 
> [1 Mail message body <text/plain; US-ASCII (7bit)>]
> According to the ChangeLog in Ruby 1.8.4 the 
> following patch was made to Ruby in 2005
> 
> Wed Jun  8 08:33:10 2005  Nobuyoshi Nakada  <nobu@ruby-
> lang.org>
> * eval.c (backtrace): skip successive frames sharing same node. 
> 
> We are having some trouble as a result, because when using the 
> coerce feature of ruby, the call stack no longer contains the 
> information needed, and we have traced this to a line of code in
> backtrace in eval.c.
> 
>  if (frame->prev->node == n) continue;
> 
> If this is commented out then the problem goes away.
> 
> The problem is that the calling operator e.g. `+' is no longer in the
> string given by caller[0] and so it is not possible to take different
> action depending on different operators.

Does this help?


Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.924 diff -p -U 2 -r1.924 eval.c --- eval.c 19 Jul 2006 13:52:03 -0000 1.924 +++ eval.c 20 Jul 2006 15:05:30 -0000 @@ -5805,2 +5805,3 @@ rb_call0(VALUE klass, VALUE recv, ID id, PUSH_SCOPE(); + ruby_frame->node = body; if (body->nd_rval) {
-- Nobu Nakada