From: Rick M. <obj...@gm...> - 2009-03-23 20:24:19
|
Mark, My previous fix "over shot" a little, going from on trapping to too much. This is fixed now. Rick On Mon, Mar 23, 2009 at 4:00 PM, Mark Miesfeld <mie...@gm...> wrote: > Commit 4296 causes a large number tests in the test suite to fail. It > seems like two basic categories of failures. As usual, I'm having > trouble sorting out what should be what. <grin> > > The first category, and most of the failures, are from rxmath. Before > 4296, these two lines: > > answ = rxCalcSin(45) > say 'rxCalcSin(45) is:' answ > > produce: > > rxCalcSin(45) is: 0.707106781 > > A 4296 or later build produces: > > 16 *-* answ = rxCalcSin(45) > Error 44 running E:\work.ooRexx\qRxmath.rex line 16: Function or > message did not return data > Error 44.1: No data returned from function "RXCALCSIN" > > I see why, but am not sure what the proper thing to do is. After the > rxmath calculates the number, it goes to format the return using: > > context->DoubleToObjectWithPrecision(x, precision); > > which goes into RexxNumberString::newInstanceFromDouble() > > and has: > > sprintf(doubleStr, "%.*g", precision + 2, number); > > then when it goes into RexxNumberString::prepareNumber() it hits this: > > RexxNumberString *newObj = this->clone(); > if (newObj->length > NumberDigits) > { /* is the length larger than digits()*/ > /* raise a numeric condition, may */ > /* not return from this. */ > reportCondition(OREF_LOSTDIGITS, (RexxString *)newObj); > > Since the number was formatted in sprintf() as 2 digits longer than > the precision, it never returns from reportCondition() and the > external function rxCalcSin() ends up not returning anything. > > Rick, here's a quick cut and paste program to demonstrate the error: > > /* Rexx */ > parse version v > say > say "Rexx 'version' information:" > say " " v > say > > ret = rxFuncAdd("mathLoadFuncs", "rxmath", "mathLoadFuncs") > say 'func add ret:' ret > ret = mathLoadFuncs() > say 'math load ret:' ret > > sq = rxCalcSqrt(16) > say 'square root of 16 is:' sq > > answ = rxCalcSin(45) > say 'rxCalcSin(45) is:' answ > > return > > So, once again, I think Rick needs to figure out how to handle this. > > I'll put the second category of failures in a second post. > > -- > Mark Miesfeld > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Oorexx-devel mailing list > Oor...@li... > https://lists.sourceforge.net/lists/listinfo/oorexx-devel > |