From: <bi...@us...> - 2009-06-21 16:27:04
|
Revision: 4822 http://oorexx.svn.sourceforge.net/oorexx/?rev=4822&view=rev Author: bigrixx Date: 2009-06-21 16:27:03 +0000 (Sun, 21 Jun 2009) Log Message: ----------- [ oorexx-Bugs-2809913 ] rexx.exe not showing error message Modified Paths: -------------- main/branches/4.0beta/trunk/interpreter/concurrency/RexxActivity.cpp main/branches/4.0beta/trunk/interpreter/concurrency/RexxActivity.hpp main/branches/4.0beta/trunk/interpreter/concurrency/RexxStartDispatcher.cpp main/branches/4.0beta/trunk/interpreter/concurrency/TranslateDispatcher.cpp Modified: main/branches/4.0beta/trunk/interpreter/concurrency/RexxActivity.cpp =================================================================== --- main/branches/4.0beta/trunk/interpreter/concurrency/RexxActivity.cpp 2009-06-21 16:26:23 UTC (rev 4821) +++ main/branches/4.0beta/trunk/interpreter/concurrency/RexxActivity.cpp 2009-06-21 16:27:03 UTC (rev 4822) @@ -335,12 +335,19 @@ } -wholenumber_t RexxActivity::error(RexxActivationBase *activation) +wholenumber_t RexxActivity::error(RexxActivationBase *activation, RexxDirectory *errorInfo) /******************************************************************************/ /* Function: Force error termination on an activity, returning the resulting */ /* REXX error code. */ /******************************************************************************/ { + // if not passed an explicit error object, use whatever we have in our + // local holder. + if (errorInfo == OREF_NULL) + { + errorInfo = this->conditionobj; + } + // unwind to a base activation while (topStackFrame != activation) { @@ -351,12 +358,12 @@ wholenumber_t rc = Error_Interpretation/1000; /* set default return code */ /* did we get a condtion object? */ - if (this->conditionobj != OREF_NULL) + if (errorInfo != OREF_NULL) { /* force it to display */ - this->display(this->conditionobj); + this->display(errorInfo); // try to convert. Leaves unchanged if not value - this->conditionobj->at(OREF_RC)->numberValue(rc); + errorInfo->at(OREF_RC)->numberValue(rc); } return rc; /* return the error code */ } Modified: main/branches/4.0beta/trunk/interpreter/concurrency/RexxActivity.hpp =================================================================== --- main/branches/4.0beta/trunk/interpreter/concurrency/RexxActivity.hpp 2009-06-21 16:26:23 UTC (rev 4821) +++ main/branches/4.0beta/trunk/interpreter/concurrency/RexxActivity.hpp 2009-06-21 16:27:03 UTC (rev 4822) @@ -136,7 +136,7 @@ void reset(); void runThread(); wholenumber_t error(); - wholenumber_t error(RexxActivationBase *); + wholenumber_t error(RexxActivationBase *, RexxDirectory *errorInfo); wholenumber_t errorNumber(RexxDirectory *conditionObject); bool raiseCondition(RexxString *, RexxObject *, RexxString *, RexxObject *, RexxObject *); bool raiseCondition(RexxDirectory *); Modified: main/branches/4.0beta/trunk/interpreter/concurrency/RexxStartDispatcher.cpp =================================================================== --- main/branches/4.0beta/trunk/interpreter/concurrency/RexxStartDispatcher.cpp 2009-06-21 16:26:23 UTC (rev 4821) +++ main/branches/4.0beta/trunk/interpreter/concurrency/RexxStartDispatcher.cpp 2009-06-21 16:27:03 UTC (rev 4822) @@ -179,7 +179,7 @@ ActivityDispatcher::handleError(-r, c); retcode = (short)rc; // process the error to display the error message. - activity->error(activation); + activity->error(activation, conditionData); } Modified: main/branches/4.0beta/trunk/interpreter/concurrency/TranslateDispatcher.cpp =================================================================== --- main/branches/4.0beta/trunk/interpreter/concurrency/TranslateDispatcher.cpp 2009-06-21 16:26:23 UTC (rev 4821) +++ main/branches/4.0beta/trunk/interpreter/concurrency/TranslateDispatcher.cpp 2009-06-21 16:27:03 UTC (rev 4822) @@ -107,7 +107,7 @@ ActivityDispatcher::handleError(rc, c); rc = -r; // process the error to display the error message. - activity->error(activation); + activity->error(activation, conditionData); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |