Hi I have tested that on my problem example and it restores the desired behaviour. Is is possible to include that in the next release, please? Thanks for the help. John Fletcher ------- Forwarded message follows ------- Date sent: Fri, 21 Jul 2006 00:19:59 +0900 From: nobu / ruby-lang.org Send reply to: ruby-core / ruby-lang.org Subject: Re: Patch to Ruby in 2005 To: ruby-core / ruby-lang.org [ Double-click this line for list subscription options ] 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 ------- End of forwarded message --------- Dr John P. Fletcher Tel: (44) 121 204 3389 (direct line) Chemical Engineering and Applied Chemistry (CEAC), School of Engineering and Applied Science (SEAS), Aston University, Aston Triangle, BIRMINGHAM B4 7ET U.K. CEAC Web site http://www.ceac.aston.ac.uk/ FAX: (44) 121 204 3679