Rainer, please open a Patch tracker item for your changes an submit an
SVN generated DIFF as the patch.
As for the trap, I really can't recommend anything more that "debug
it". That's a fairly simple call, I can't see why that would trap
like that. Use the deugger to look at what's getting returned from
RexxGetVersionInformation() to see if that information looks good.
The only other thing I might suggest is possibly changing the printf()
call to
fprintf(stderr, "%s", ptr);
But that's just a blind guess.
Rick
On Tue, Oct 21, 2008 at 2:40 PM, Rainer Tammer <[EMAIL PROTECTED]> wrote:
> Hello,
> I now got a emergency fix for the IBM XL C/C++ 9 compiler. With this fix
> I can compiler ooRexx 4.0.0 on AIX. Unfortunately I need to fix several
> things:
>
> 1. (RexxObject*) cast missing
>
> I have inserted several casts (at the moment veeeeery quick fix, several
> cast are not necessary ... but the compiler is happy )
>
> diff -r -c ooRexx-4.0.0-TRUNK-ORIG/interpreter/classes/ArrayClass.cpp
> ooRexx-4.0.0-TRUNK/interpreter/classes/ArrayClass.cpp
> *** ooRexx-4.0.0-TRUNK-ORIG/interpreter/classes/ArrayClass.cpp<>2008-10-21
> 08:02:42.000000000 +0200
> --- ooRexx-4.0.0-TRUNK/interpreter/classes/ArrayClass.cpp<----->2008-10-21
> 18:56:01.000000000 +0200
> ***************
> *** 2418,2424 ****
> {
> ProtectedObject result;
> comparator->sendMessage(OREF_COMPARE, left, right, result);
> ! if (result == OREF_NULL)
> {
> reportException(Error_No_result_object_message, OREF_COMPARE);
> }
> --- 2418,2424 ----
> {
> ProtectedObject result;
> comparator->sendMessage(OREF_COMPARE, left, right, result);
> ! if ((RexxObject*)result == OREF_NULL)
> {
> reportException(Error_No_result_object_message, OREF_COMPARE);
> }
>
> ... -> See patch file
>
>
> 2. Added a header for AIX (directely, not via the configure script for now)
>
> diff -r -c
> ooRexx-4.0.0-TRUNK-ORIG/rexxapi/common/platform/unix/SysCSStream.cpp
> ooRexx-4.0.0-TRUNK/rexxapi/common/platform/unix/SysCSStream.cpp
> ***
> ooRexx-4.0.0-TRUNK-ORIG/rexxapi/common/platform/unix/SysCSStream.cpp<------>2008-10-21
> 08:00:50.000000000 +0200
> ---
> ooRexx-4.0.0-TRUNK/rexxapi/common/platform/unix/SysCSStream.cpp<--->2008-10-21
> 19:25:37.000000000 +0200
> ***************
> *** 51,57 ****
> --- 51,62 ----
> #include <sys/ioctl.h>
> #include <netdb.h>
> #if !defined(__OpenBSD__)
> + #ifndef _AIX
> #include <byteswap.h>
> + #endif
> + #ifdef _AIX
> + #include <strings.h>
> + #endif
> #endif
> #include <errno.h>
> #include "SysCSStream.hpp"
> ..
> 3. commented out some pieces which have bot been updated in rexxutil.cpp
>
> diff -r -c
> ooRexx-4.0.0-TRUNK-ORIG/extensions/rexxutil/platform/unix/rexxutil.cpp
> ooRexx-4.0.0-TRUNK/extensions/rexxutil/platform/unix/rexxutil.cpp
> ***
> ooRexx-4.0.0-TRUNK-ORIG/extensions/rexxutil/platform/unix/rexxutil.cpp<---->2008-10-21
> 08:01:34.000000000 +0200
> ---
> ooRexx-4.0.0-TRUNK/extensions/rexxutil/platform/unix/rexxutil.cpp<->2008-10-21
> 19:39:06.000000000 +0200
> ***************
> *** 1151,1157 ****
> if (options&NAME_ONLY) /* name only? */
> strcpy(ldp->Temp, ldp->truefile); /* just copy it over */
> else {
> ! #ifdef AIX
> timestamp = localtime_r(&(finfo->st_mtime),&stTimestamp); /* get the
> time info */
> #else
> timestamp = localtime(&(finfo->st_mtime));/* get the time info */
> --- 1151,1157 ----
> if (options&NAME_ONLY) /* name only? */
> strcpy(ldp->Temp, ldp->truefile); /* just copy it over */
> else {
> ! #ifdef TAMMER_AIX
> timestamp = localtime_r(&(finfo->st_mtime),&stTimestamp); /* get the
> time info */
> #else
> timestamp = localtime(&(finfo->st_mtime));/* get the time info */
> ***************
> *** 3603,3609 ****
> }
> ..
> ..
> ! #ifdef AIX
> /*************************************************************************
> * Function: SysAddFuncPkg *
> * *
> --- 3603,3609 ----
> }
> ..
> ..
> ! #ifdef TAMEMR_AIX
> /*************************************************************************
> * Function: SysAddFuncPkg *
> * *
> ***************
> *** 5183,5189 ****
> REXX_CLASSIC_ROUTINE(SysClearRexxMacroSpace, SysClearRexxMacroSpace),
> REXX_CLASSIC_ROUTINE(SysLoadRexxMacroSpace, SysLoadRexxMacroSpace),
> REXX_CLASSIC_ROUTINE(SysSaveRexxMacroSpace, SysSaveRexxMacroSpace),
> ! #if defined(AIX)
> REXX_CLASSIC_ROUTINE(SysAddFuncPkg, SysAddFuncPkg),
> REXX_CLASSIC_ROUTINE(SysAddCmdPkg, SysAddCmdPkg),
> REXX_CLASSIC_ROUTINE(SysDropFuncPkg, SysDropFuncPkg),
> --- 5183,5189 ----
> REXX_CLASSIC_ROUTINE(SysClearRexxMacroSpace, SysClearRexxMacroSpace),
> REXX_CLASSIC_ROUTINE(SysLoadRexxMacroSpace, SysLoadRexxMacroSpace),
> REXX_CLASSIC_ROUTINE(SysSaveRexxMacroSpace, SysSaveRexxMacroSpace),
> ! #if defined(TAMMER_AIX)
> REXX_CLASSIC_ROUTINE(SysAddFuncPkg, SysAddFuncPkg),
> REXX_CLASSIC_ROUTINE(SysAddCmdPkg, SysAddCmdPkg),
> REXX_CLASSIC_ROUTINE(SysDropFuncPkg, SysDropFuncPkg),
>
> Are this utility functions no longer needed ??
> What is the replacement for this functions ??
>
> With this fixes applied I can start rxapi and the image can be build, but
> rexx -v core dumps after the first line.
>
> This works:
>
> # ./rexx
>
> Syntax is "rexx [-v] filename [arguments]"
> or "rexx [-e] program_string [arguments]".
>
> This fails:
>
> # ./rexx -v
> Open Object Rexx
> --> core dump
>
> # dbx .libs/lt-rexx
> Type 'help' for help.
> [using memory image in core]
> reading symbolic information ...
>
> Segmentation fault in colval._getcolval [/usr/lib/threads/libc.a] at
> 0xd035b680 ($t1)
> 0xd035b680 (_getcolval+0x268) 89030000 lbz r8,0x0(r3)
> (dbx) where
> colval._getcolval() at 0xd035b680
> doprnt._doprnt(??, ??, ??) at 0xd036860c
> printf.fprintf(0xf027fee0, 0x20252fc8, 0x36b6003a, 0x7f7f7f7f, 0x3,
> 0x746d6c00, 0x74, 0x2ff208e0) at 0xd0366570
> main(argc = 2, argv = 0x2ff22a30), line 113 in "rexx.cpp"
>
> Any ideas ??
>
> Bye
> Rainer Tammer
>
>
> diff -r -c
> ooRexx-4.0.0-TRUNK-ORIG/extensions/rexxutil/platform/unix/rexxutil.cpp
> ooRexx-4.0.0-TRUNK/extensions/rexxutil/platform/unix/rexxutil.cpp
> *** ooRexx-4.0.0-TRUNK-ORIG/extensions/rexxutil/platform/unix/rexxutil.cpp
> 2008-10-21 08:01:34.000000000 +0200
> --- ooRexx-4.0.0-TRUNK/extensions/rexxutil/platform/unix/rexxutil.cpp
> 2008-10-21 19:39:06.000000000 +0200
> ***************
> *** 1151,1157 ****
> if (options&NAME_ONLY) /* name only? */
> strcpy(ldp->Temp, ldp->truefile); /* just copy it over */
> else {
> ! #ifdef AIX
> timestamp = localtime_r(&(finfo->st_mtime),&stTimestamp); /* get the
> time info */
> #else
> timestamp = localtime(&(finfo->st_mtime));/* get the time info */
> --- 1151,1157 ----
> if (options&NAME_ONLY) /* name only? */
> strcpy(ldp->Temp, ldp->truefile); /* just copy it over */
> else {
> ! #ifdef TAMMER_AIX
> timestamp = localtime_r(&(finfo->st_mtime),&stTimestamp); /* get the
> time info */
> #else
> timestamp = localtime(&(finfo->st_mtime));/* get the time info */
> ***************
> *** 3603,3609 ****
> }
>
>
> ! #ifdef AIX
> /*************************************************************************
> * Function: SysAddFuncPkg *
> * *
> --- 3603,3609 ----
> }
>
>
> ! #ifdef TAMEMR_AIX
> /*************************************************************************
> * Function: SysAddFuncPkg *
> * *
> ***************
> *** 5183,5189 ****
> REXX_CLASSIC_ROUTINE(SysClearRexxMacroSpace, SysClearRexxMacroSpace),
> REXX_CLASSIC_ROUTINE(SysLoadRexxMacroSpace, SysLoadRexxMacroSpace),
> REXX_CLASSIC_ROUTINE(SysSaveRexxMacroSpace, SysSaveRexxMacroSpace),
> ! #if defined(AIX)
> REXX_CLASSIC_ROUTINE(SysAddFuncPkg, SysAddFuncPkg),
> REXX_CLASSIC_ROUTINE(SysAddCmdPkg, SysAddCmdPkg),
> REXX_CLASSIC_ROUTINE(SysDropFuncPkg, SysDropFuncPkg),
> --- 5183,5189 ----
> REXX_CLASSIC_ROUTINE(SysClearRexxMacroSpace, SysClearRexxMacroSpace),
> REXX_CLASSIC_ROUTINE(SysLoadRexxMacroSpace, SysLoadRexxMacroSpace),
> REXX_CLASSIC_ROUTINE(SysSaveRexxMacroSpace, SysSaveRexxMacroSpace),
> ! #if defined(TAMMER_AIX)
> REXX_CLASSIC_ROUTINE(SysAddFuncPkg, SysAddFuncPkg),
> REXX_CLASSIC_ROUTINE(SysAddCmdPkg, SysAddCmdPkg),
> REXX_CLASSIC_ROUTINE(SysDropFuncPkg, SysDropFuncPkg),
> diff -r -c ooRexx-4.0.0-TRUNK-ORIG/interpreter/classes/ArrayClass.cpp
> ooRexx-4.0.0-TRUNK/interpreter/classes/ArrayClass.cpp
> *** ooRexx-4.0.0-TRUNK-ORIG/interpreter/classes/ArrayClass.cpp 2008-10-21
> 08:02:42.000000000 +0200
> --- ooRexx-4.0.0-TRUNK/interpreter/classes/ArrayClass.cpp 2008-10-21
> 18:56:01.000000000 +0200
> ***************
> *** 2418,2424 ****
> {
> ProtectedObject result;
> comparator->sendMessage(OREF_COMPARE, left, right, result);
> ! if (result == OREF_NULL)
> {
> reportException(Error_No_result_object_message, OREF_COMPARE);
> }
> --- 2418,2424 ----
> {
> ProtectedObject result;
> comparator->sendMessage(OREF_COMPARE, left, right, result);
> ! if ((RexxObject*)result == OREF_NULL)
> {
> reportException(Error_No_result_object_message, OREF_COMPARE);
> }
> diff -r -c ooRexx-4.0.0-TRUNK-ORIG/interpreter/classes/ObjectClass.cpp
> ooRexx-4.0.0-TRUNK/interpreter/classes/ObjectClass.cpp
> *** ooRexx-4.0.0-TRUNK-ORIG/interpreter/classes/ObjectClass.cpp 2008-10-21
> 08:02:46.000000000 +0200
> --- ooRexx-4.0.0-TRUNK/interpreter/classes/ObjectClass.cpp 2008-10-21
> 19:16:43.000000000 +0200
> ***************
> *** 188,194 ****
> ProtectedObject result;
>
> sendMessage(OREF_COMPARETO, other, result);
> ! if (result == OREF_NULL)
> {
> reportException(Error_No_result_object_message, OREF_COMPARETO);
> }
> --- 188,194 ----
> ProtectedObject result;
>
> sendMessage(OREF_COMPARETO, other, result);
> ! if ((RexxObject*)result == OREF_NULL)
> {
> reportException(Error_No_result_object_message, OREF_COMPARETO);
> }
> ***************
> *** 273,279 ****
> // retrieve the method from the dictionary
> RexxMethod *method_object = (RexxMethod
> *)this->behaviour->getMethodDictionary()->stringGet(method_name);
> // this is an error if it doesn't exist
> ! if (method_object == OREF_NULL)
> {
> reportException(Error_No_method_name, this, method_name);
> }
> --- 273,279 ----
> // retrieve the method from the dictionary
> RexxMethod *method_object = (RexxMethod
> *)this->behaviour->getMethodDictionary()->stringGet(method_name);
> // this is an error if it doesn't exist
> ! if ((RexxObject *)method_object == OREF_NULL)
> {
> reportException(Error_No_method_name, this, method_name);
> }
> ***************
> *** 548,554 ****
> /* clear out the existing object variable pointer */
> newObj->objectVariables = OREF_NULL;
>
> ! while (dictionary != OREF_NULL)
> {
> /* copy the dictionary */
> RexxVariableDictionary *newDictionary = (RexxVariableDictionary
> *)dictionary->copy();
> --- 548,554 ----
> /* clear out the existing object variable pointer */
> newObj->objectVariables = OREF_NULL;
>
> ! while ((RexxObject *)dictionary != OREF_NULL)
> {
> /* copy the dictionary */
> RexxVariableDictionary *newDictionary = (RexxVariableDictionary
> *)dictionary->copy();
> ***************
> *** 571,577 ****
> /* get the top activation */
> RexxActivationBase *activation =
> ActivityManager::currentActivity->getTopStackFrame();
> /* have an activation? */
> ! if (activation != OREF_NULL)
> {
> RexxObject *sender = activation->getReceiver();/* get the receiving
> object */
> if (sender == (RexxObject *)this) /* the same receiver?
> */
> --- 571,577 ----
> /* get the top activation */
> RexxActivationBase *activation =
> ActivityManager::currentActivity->getTopStackFrame();
> /* have an activation? */
> ! if ((RexxObject *)activation != OREF_NULL)
> {
> RexxObject *sender = activation->getReceiver();/* get the receiving
> object */
> if (sender == (RexxObject *)this) /* the same receiver?
> */
> ***************
> *** 748,754 ****
> /* grab the method from this level */
> RexxMethod *method_save = this->behaviour->methodLookup(msgname);
> /* method exists...special processing*/
> ! if (method_save != OREF_NULL && method_save->isSpecial())
> {
> if (method_save->isPrivate()) /* actually private method?
> */
> {
> --- 748,754 ----
> /* grab the method from this level */
> RexxMethod *method_save = this->behaviour->methodLookup(msgname);
> /* method exists...special processing*/
> ! if ((RexxObject *)method_save != OREF_NULL &&
> method_save->isSpecial())
> {
> if (method_save->isPrivate()) /* actually private method?
> */
> {
> ***************
> *** 756,762 ****
> method_save = this->checkPrivate(method_save);
> }
> /* now process protected methods */
> ! if (method_save != OREF_NULL && method_save->isProtected())
> {
> /* really a protected method */
> this->processProtectedMethod(msgname, method_save, arguments,
> count, result);
> --- 756,762 ----
> method_save = this->checkPrivate(method_save);
> }
> /* now process protected methods */
> ! if ((RexxObject *)method_save != OREF_NULL &&
> method_save->isProtected())
> {
> /* really a protected method */
> this->processProtectedMethod(msgname, method_save, arguments,
> count, result);
> ***************
> *** 764,770 ****
> }
> }
> /* have a method */
> ! if (method_save != OREF_NULL)
> {
> method_save->run(ActivityManager::currentActivity, this, msgname,
> arguments, count, result);
> }
> --- 764,770 ----
> }
> }
> /* have a method */
> ! if ((RexxObject *)method_save != OREF_NULL)
> {
> method_save->run(ActivityManager::currentActivity, this, msgname,
> arguments, count, result);
> }
> ***************
> *** 789,795 ****
> ActivityManager::currentActivity->checkStackSpace(); /* have
> enough stack space? */
> /* go to the higher level */
> RexxMethod *method_save = this->superMethod(msgname, startscope);
> ! if (method_save != OREF_NULL && method_save->isProtected())
> {
> if (method_save->isPrivate()) /* actually private method?
> */
> {
> --- 789,795 ----
> ActivityManager::currentActivity->checkStackSpace(); /* have
> enough stack space? */
> /* go to the higher level */
> RexxMethod *method_save = this->superMethod(msgname, startscope);
> ! if ((RexxObject *)method_save != OREF_NULL &&
> method_save->isProtected())
> {
> if (method_save->isPrivate()) /* actually private method?
> */
> {
> ***************
> *** 803,809 ****
> }
> }
> /* have a method */
> ! if (method_save != OREF_NULL)
> {
> /* run the method */
> method_save->run(ActivityManager::currentActivity, this, msgname,
> arguments, count, result);
> --- 803,809 ----
> }
> }
> /* have a method */
> ! if ((RexxObject *)method_save != OREF_NULL)
> {
> /* run the method */
> method_save->run(ActivityManager::currentActivity, this, msgname,
> arguments, count, result);
> ***************
> *** 850,856 ****
> /* no method for this msgname */
> /* find the unknown method */
> RexxMethod *method_save = this->behaviour->methodLookup(OREF_UNKNOWN);
> ! if (method_save == OREF_NULL) /* "unknown" method exists?
> */
> /* no unknown method - try to raise */
> /* a NOMETHOD condition, and if that */
> {
> --- 850,856 ----
> /* no method for this msgname */
> /* find the unknown method */
> RexxMethod *method_save = this->behaviour->methodLookup(OREF_UNKNOWN);
> ! if ((RexxObject *)method_save == OREF_NULL) /* "unknown" method
> exists? */
> /* no unknown method - try to raise */
> /* a NOMETHOD condition, and if that */
> {
> ***************
> *** 1440,1446 ****
> RexxObject *scope = lastMethod()->getScope(); /* get the method's
> scope */
> /* get the object name variable
> */
> string_value = (RexxString *)this->getObjectVariable(OREF_NAME, scope);
> ! if (string_value == OREF_NULL)
> { /* no name? */
> if (this->isBaseClass()) /* primitive object?
> */
> {
> --- 1440,1446 ----
> RexxObject *scope = lastMethod()->getScope(); /* get the method's
> scope */
> /* get the object name variable
> */
> string_value = (RexxString *)this->getObjectVariable(OREF_NAME, scope);
> ! if ((RexxObject*)string_value == OREF_NULL)
> { /* no name? */
> if (this->isBaseClass()) /* primitive object?
> */
> {
> ***************
> *** 1555,1561 ****
> }
> }
>
> ! if (methobj == OREF_NULL) /* we weren't passed a method,
> */
> {
> /* add a dummy method */
> methobj = (RexxMethod *)TheNilObject;
> --- 1555,1561 ----
> }
> }
>
> ! if ((RexxObject *)methobj == OREF_NULL) /* we weren't
> passed a method, */
> {
> /* add a dummy method */
> methobj = (RexxMethod *)TheNilObject;
> ***************
> *** 1602,1608 ****
> /* find the MAKExxxx method */
> RexxMethod *method = this->behaviour->methodLookup(make_method);
> /* have this method? */
> ! if (method != OREF_NULL)
> {
> /* Return its results */
> return this->sendMessage(make_method);
> --- 1602,1608 ----
> /* find the MAKExxxx method */
> RexxMethod *method = this->behaviour->methodLookup(make_method);
> /* have this method? */
> ! if ((RexxObject *)method != OREF_NULL)
> {
> /* Return its results */
> return this->sendMessage(make_method);
> ***************
> *** 1632,1638 ****
> /* Get the message name. */
> RexxObject *message = arguments[0]; /* get the message .
> */
> /* Did we receive a message name
> */
> ! if (message == OREF_NULL)
> {
> missingArgument(ARG_ONE); /* Yes, this is an error.
> */
> }
> --- 1632,1638 ----
> /* Get the message name. */
> RexxObject *message = arguments[0]; /* get the message .
> */
> /* Did we receive a message name
> */
> ! if ((RexxObject *)message == OREF_NULL)
> {
> missingArgument(ARG_ONE); /* Yes, this is an error.
> */
> }
> ***************
> *** 1665,1671 ****
> }
> }
> }
> ! if (messageArray != OREF_NULL) /* is message specified as an
> array? */
> {
> /* didn't get two arguments? */
> if (messageArray->getDimension() != 1 || messageArray->size() != 2)
> --- 1665,1671 ----
> }
> }
> }
> ! if ((RexxObject *)messageArray != OREF_NULL) /* is message
> specified as an array? */
> {
> /* didn't get two arguments? */
> if (messageArray->getDimension() != 1 || messageArray->size() != 2)
> ***************
> *** 1684,1690 ****
> /* get the top activation */
> RexxActivationBase *activation =
> ActivityManager::currentActivity->getTopStackFrame();
> /* have an activation? */
> ! if (activation != OREF_NULL)
> {
> /* get the receiving object */
> RexxObject *sender = activation->getReceiver();
> --- 1684,1690 ----
> /* get the top activation */
> RexxActivationBase *activation =
> ActivityManager::currentActivity->getTopStackFrame();
> /* have an activation? */
> ! if ((RexxObject *)activation != OREF_NULL)
> {
> /* get the receiving object */
> RexxObject *sender = activation->getReceiver();
> ***************
> *** 1937,1943 ****
> RexxObject *RexxObject::getObjectVariable(RexxString *name)
> {
> RexxVariableDictionary *dictionary = objectVariables;
> ! while (dictionary != OREF_NULL)
> {
> // see if this dictionary has the variable
> RexxObject *val = dictionary->realValue(name);
> --- 1937,1943 ----
> RexxObject *RexxObject::getObjectVariable(RexxString *name)
> {
> RexxVariableDictionary *dictionary = objectVariables;
> ! while ((RexxObject *)dictionary != OREF_NULL)
> {
> // see if this dictionary has the variable
> RexxObject *val = dictionary->realValue(name);
> ***************
> *** 2028,2034 ****
>
> /******************************************************************************/
> {
> RexxVariableDictionary *dictionary = objectVariables; /* get the
> head of the chain */
> ! while (dictionary != OREF_NULL)
> { /* search for a scope match */
> /* if we've found a match, return it */
> if (dictionary->isScope(scope))
> --- 2028,2034 ----
>
> /******************************************************************************/
> {
> RexxVariableDictionary *dictionary = objectVariables; /* get the
> head of the chain */
> ! while ((RexxObject *)dictionary != OREF_NULL)
> { /* search for a scope match */
> /* if we've found a match, return it */
> if (dictionary->isScope(scope))
> ***************
> *** 2054,2060 ****
>
> /******************************************************************************/
> {
> RexxString *classId = this->id(); /* get the id string
> */
> ! if (classId == OREF_NULL) /* internal class?
> */
> {
> return "unknown Class"; /* return an unknown identifier
> */
> }
> --- 2054,2060 ----
>
> /******************************************************************************/
> {
> RexxString *classId = this->id(); /* get the id string
> */
> ! if ((RexxObject *)classId == OREF_NULL) /* internal class?
> */
> {
> return "unknown Class"; /* return an unknown identifier
> */
> }
> ***************
> *** 2071,2077 ****
> {
> /* get the class */
> RexxClass *createClass = this->behaviourObject()->getOwningClass();
> ! if (createClass == OREF_NULL) /* no class object?
> */
> {
> return OREF_NULL; /* return nothing
> */
> }
> --- 2071,2077 ----
> {
> /* get the class */
> RexxClass *createClass = this->behaviourObject()->getOwningClass();
> ! if ((RexxObject *)createClass == OREF_NULL) /* no class object?
> */
> {
> return OREF_NULL; /* return nothing
> */
> }
> ***************
> *** 2162,2168 ****
> ProtectedObject result; /* returned result
> */\
> /* do a real message send
> */\
> this->messageSend(OREF_##message, &operand, 1, result);
> \
> ! if (result == OREF_NULL) /* in an expression and need a
> result*/ \
> /* need to raise an exception
> */ \
> reportException(Error_No_result_object_message, OREF_##message); \
> return (RexxObject *)result; /* return the final result
> */ \
> --- 2162,2168 ----
> ProtectedObject result; /* returned result
> */\
> /* do a real message send
> */\
> this->messageSend(OREF_##message, &operand, 1, result);
> \
> ! if ((RexxObject *)result == OREF_NULL) /* in an expression
> and need a result*/ \
> /* need to raise an exception
> */ \
> reportException(Error_No_result_object_message, OREF_##message); \
> return (RexxObject *)result; /* return the final result
> */ \
> ***************
> *** 2175,2181 ****
> ProtectedObject result; /* returned result
> */\
> /* do a real message send
> */\
> this->messageSend(OREF_##message, &operand, operand == OREF_NULL ? 0 : 1,
> result); \
> ! if (result == OREF_NULL) /* in an expression and need a
> result*/ \
> /* need to raise an exception
> */ \
> reportException(Error_No_result_object_message, OREF_##message); \
> return (RexxObject *)result; /* return the final result
> */ \
> --- 2175,2181 ----
> ProtectedObject result; /* returned result
> */\
> /* do a real message send
> */\
> this->messageSend(OREF_##message, &operand, operand == OREF_NULL ? 0 : 1,
> result); \
> ! if ((RexxObject *)result == OREF_NULL) /* in an expression
> and need a result*/ \
> /* need to raise an exception
> */ \
> reportException(Error_No_result_object_message, OREF_##message); \
> return (RexxObject *)result; /* return the final result
> */ \
> ***************
> *** 2379,2385 ****
> // try for the variable value
> RexxObject *C_self = getObjectVariable(OREF_CSELF);
> // if we found one, validate for unwrappering
> ! if (C_self != OREF_NULL)
> {
> // if this is a pointer, then unwrapper the value
> if (C_self->isInstanceOf(ThePointerClass))
> --- 2379,2385 ----
> // try for the variable value
> RexxObject *C_self = getObjectVariable(OREF_CSELF);
> // if we found one, validate for unwrappering
> ! if ((RexxObject *)C_self != OREF_NULL)
> {
> // if this is a pointer, then unwrapper the value
> if (C_self->isInstanceOf(ThePointerClass))
> diff -r -c
> ooRexx-4.0.0-TRUNK-ORIG/interpreter/concurrency/RexxStartDispatcher.cpp
> ooRexx-4.0.0-TRUNK/interpreter/concurrency/RexxStartDispatcher.cpp
> *** ooRexx-4.0.0-TRUNK-ORIG/interpreter/concurrency/RexxStartDispatcher.cpp
> 2008-10-21 08:02:25.000000000 +0200
> --- ooRexx-4.0.0-TRUNK/interpreter/concurrency/RexxStartDispatcher.cpp
> 2008-10-21 19:18:08.000000000 +0200
> ***************
> *** 139,145 ****
> if (result != NULL) /* if return provided for
> */
> {
> /* actually have a result to return? */
> ! if (program_result != OREF_NULL)
> {
> /* force to a string value */
> program_result = ((RexxObject
> *)program_result)->stringValue();
> --- 139,145 ----
> if (result != NULL) /* if return provided for
> */
> {
> /* actually have a result to return? */
> ! if ((RexxObject*)program_result != OREF_NULL)
> {
> /* force to a string value */
> program_result = ((RexxObject
> *)program_result)->stringValue();
> ***************
> *** 152,158 ****
> }
> }
> /* If there is a return val...
> */
> ! if (program_result != OREF_NULL)
> {
> wholenumber_t return_code;
>
> --- 152,158 ----
> }
> }
> /* If there is a return val...
> */
> ! if ((RexxObject*)program_result != OREF_NULL)
> {
> wholenumber_t return_code;
>
> ***************
> *** 191,197 ****
> */
> void CallRoutineDispatcher::run()
> {
> ! if (arguments != OREF_NULL)
> {
> // we use a null string for the name when things are called
> directly
> routine->call(activity, OREF_NULLSTRING, arguments->data(),
> arguments->size(), result);
> --- 191,197 ----
> */
> void CallRoutineDispatcher::run()
> {
> ! if ((RexxObject*)arguments != OREF_NULL)
> {
> // we use a null string for the name when things are called
> directly
> routine->call(activity, OREF_NULLSTRING, arguments->data(),
> arguments->size(), result);
> ***************
> *** 217,223 ****
>
> ProtectedObject p(routine);
>
> ! if (arguments != OREF_NULL)
> {
> // use the provided name for the call name
> routine->runProgram(activity, arguments->data(), arguments->size(),
> result);
> --- 217,223 ----
>
> ProtectedObject p(routine);
>
> ! if ((RexxObject*)arguments != OREF_NULL)
> {
> // use the provided name for the call name
> routine->runProgram(activity, arguments->data(), arguments->size(),
> result);
> diff -r -c
> ooRexx-4.0.0-TRUNK-ORIG/interpreter/expression/ExpressionFunction.cpp
> ooRexx-4.0.0-TRUNK/interpreter/expression/ExpressionFunction.cpp
> *** ooRexx-4.0.0-TRUNK-ORIG/interpreter/expression/ExpressionFunction.cpp
> 2008-10-21 08:02:50.000000000 +0200
> --- ooRexx-4.0.0-TRUNK/interpreter/expression/ExpressionFunction.cpp
> 2008-10-21 19:19:03.000000000 +0200
> ***************
> *** 96,102 ****
> /* internal routines allowed? */
> if (!(this->flags&function_nointernal))
> {
> ! if (labels != OREF_NULL) /* have a labels table?
> */
> {
> /* check the label table
> */
> OrefSet(this, this->target, (RexxInstruction
> *)labels->at(this->functionName));
> --- 96,102 ----
> /* internal routines allowed? */
> if (!(this->flags&function_nointernal))
> {
> ! if ((RexxObject*)labels != OREF_NULL) /* have a labels
> table? */
> {
> /* check the label table
> */
> OrefSet(this, this->target, (RexxInstruction
> *)labels->at(this->functionName));
> ***************
> *** 223,229 ****
> context->externalCall(this->functionName, argcount, stack,
> OREF_FUNCTIONNAME, result);
> break;
> }
> ! if (result == OREF_NULL) /* result returned?
> */
> {
> /* raise an error */
> if (this->functionName)
> --- 223,229 ----
> context->externalCall(this->functionName, argcount, stack,
> OREF_FUNCTIONNAME, result);
> break;
> }
> ! if ((RexxObject*)result == OREF_NULL) /* result returned?
> */
> {
> /* raise an error */
> if (this->functionName)
> diff -r -c
> ooRexx-4.0.0-TRUNK-ORIG/interpreter/expression/ExpressionMessage.cpp
> ooRexx-4.0.0-TRUNK/interpreter/expression/ExpressionMessage.cpp
> *** ooRexx-4.0.0-TRUNK-ORIG/interpreter/expression/ExpressionMessage.cpp
> 2008-10-21 08:02:50.000000000 +0200
> --- ooRexx-4.0.0-TRUNK/interpreter/expression/ExpressionMessage.cpp
> 2008-10-21 19:19:48.000000000 +0200
> ***************
> *** 132,138 ****
> context->traceIntermediate(OREF_NULLSTRING,
> TRACE_PREFIX_ARGUMENT);
> }
> }
> ! if (_super == OREF_NULL) /* no super class override?
> */
> {
> /* issue the fast message
> */
> stack->send(this->messageName, argcount, result);
> --- 132,138 ----
> context->traceIntermediate(OREF_NULLSTRING,
> TRACE_PREFIX_ARGUMENT);
> }
> }
> ! if ((RexxObject*)_super == OREF_NULL) /* no super class
> override? */
> {
> /* issue the fast message
> */
> stack->send(this->messageName, argcount, result);
> ***************
> *** 152,158 ****
> stack->prefixResult(result); /* replace top element on stack
> */
> }
>
> ! if (result == OREF_NULL) /* in an expression and need a
> result*/
> {
> /* need to raise an exception
> */
> reportException(Error_No_result_object_message, this->messageName);
> --- 152,158 ----
> stack->prefixResult(result); /* replace top element on stack
> */
> }
>
> ! if ((RexxObject*)result == OREF_NULL) /* in an expression
> and need a result*/
> {
> /* need to raise an exception
> */
> reportException(Error_No_result_object_message, this->messageName);
> ***************
> *** 277,283 ****
> ProtectedObject result;
>
> // now send the message the appropriate way
> ! if (_super == OREF_NULL)
> {
> // normal message send
> stack->send(this->messageName, argcount + 1, result);
> --- 277,283 ----
> ProtectedObject result;
>
> // now send the message the appropriate way
> ! if ((RexxObject*)_super == OREF_NULL)
> {
> // normal message send
> stack->send(this->messageName, argcount + 1, result);
> diff -r -c
> ooRexx-4.0.0-TRUNK-ORIG/interpreter/instructions/CallInstruction.cpp
> ooRexx-4.0.0-TRUNK/interpreter/instructions/CallInstruction.cpp
> *** ooRexx-4.0.0-TRUNK-ORIG/interpreter/instructions/CallInstruction.cpp
> 2008-10-21 08:03:06.000000000 +0200
> --- ooRexx-4.0.0-TRUNK/interpreter/instructions/CallInstruction.cpp
> 2008-10-21 19:20:44.000000000 +0200
> ***************
> *** 147,153 ****
> return; //
> }
> if (!(instructionFlags&call_nointernal)) { /* internal routines
> allowed? */
> ! if (labels != OREF_NULL) /* have a labels table?
> */
> /* check the label table
> */
> OrefSet(this, this->target, (RexxInstruction *)labels->at((RexxString
> *)this->name));
> instructionFlags |= call_internal; /* this is an internal call
> */
> --- 147,153 ----
> return; //
> }
> if (!(instructionFlags&call_nointernal)) { /* internal routines
> allowed? */
> ! if ((RexxObject*)labels != OREF_NULL) /* have a labels
> table? */
> /* check the label table
> */
> OrefSet(this, this->target, (RexxInstruction *)labels->at((RexxString
> *)this->name));
> instructionFlags |= call_internal; /* this is an internal call
> */
> ***************
> *** 208,220 ****
> builtin_index = RexxSource::resolveBuiltin(_name);
> _target = OREF_NULL; /* clear out the target
> */
> labels = context->getLabels(); /* get the labels table
> */
> ! if (labels != OREF_NULL) /* have labels in the
> program? */
> {
> /* look up label and go to
> normal */
> /* signal processing
> */
> _target = (RexxInstruction *)(labels->at(_name));
> }
> ! if (_target != OREF_NULL) /* found one?
> */
> {
> type = call_internal; /* have an internal call
> */
> }
> --- 208,220 ----
> builtin_index = RexxSource::resolveBuiltin(_name);
> _target = OREF_NULL; /* clear out the target
> */
> labels = context->getLabels(); /* get the labels table
> */
> ! if ((RexxObject*)labels != OREF_NULL) /* have labels
> in the program? */
> {
> /* look up label and go to
> normal */
> /* signal processing
> */
> _target = (RexxInstruction *)(labels->at(_name));
> }
> ! if ((RexxObject*)_target != OREF_NULL) /* found one?
> */
> {
> type = call_internal; /* have an internal call
> */
> }
> ***************
> *** 274,280 ****
> context->externalCall(_name, argcount, stack,
> OREF_ROUTINENAME, result);
> break;
> }
> ! if (result != OREF_NULL) /* result returned?
> */
> {
> /* set the RESULT variable to the */
> /* message return value */
> --- 274,280 ----
> context->externalCall(_name, argcount, stack,
> OREF_ROUTINENAME, result);
> break;
> }
> ! if ((RexxObject*)result != OREF_NULL) /* result returned?
> */
> {
> /* set the RESULT variable to the */
> /* message return value */
> diff -r -c
> ooRexx-4.0.0-TRUNK-ORIG/interpreter/instructions/MessageInstruction.cpp
> ooRexx-4.0.0-TRUNK/interpreter/instructions/MessageInstruction.cpp
> *** ooRexx-4.0.0-TRUNK-ORIG/interpreter/instructions/MessageInstruction.cpp
> 2008-10-21 08:03:05.000000000 +0200
> --- ooRexx-4.0.0-TRUNK/interpreter/instructions/MessageInstruction.cpp
> 2008-10-21 19:21:36.000000000 +0200
> ***************
> *** 221,227 ****
> context->traceIntermediate(OREF_NULLSTRING,
> TRACE_PREFIX_ARGUMENT);
> }
> }
> ! if (super == OREF_NULL) /* no super class override?
> */
> {
> /* issue the fast message
> */
> stack->send(this->name, argcount, result);
> --- 221,227 ----
> context->traceIntermediate(OREF_NULLSTRING,
> TRACE_PREFIX_ARGUMENT);
> }
> }
> ! if ((RexxObject*)super == OREF_NULL) /* no super class
> override? */
> {
> /* issue the fast message
> */
> stack->send(this->name, argcount, result);
> ***************
> *** 236,242 ****
> {
> result = _target; /* get the target element
> */
> }
> ! if (result != OREF_NULL) /* result returned?
> */
> {
> context->traceResult((RexxObject *)result); /* trace if necessary
> */
> /* set the RESULT variable to the */
> --- 236,242 ----
> {
> result = _target; /* get the target element
> */
> }
> ! if ((RexxObject*)result != OREF_NULL) /* result returned?
> */
> {
> context->traceResult((RexxObject *)result); /* trace if necessary
> */
> /* set the RESULT variable to the */
> diff -r -c
> ooRexx-4.0.0-TRUNK-ORIG/rexxapi/common/platform/unix/SysCSStream.cpp
> ooRexx-4.0.0-TRUNK/rexxapi/common/platform/unix/SysCSStream.cpp
> *** ooRexx-4.0.0-TRUNK-ORIG/rexxapi/common/platform/unix/SysCSStream.cpp
> 2008-10-21 08:00:50.000000000 +0200
> --- ooRexx-4.0.0-TRUNK/rexxapi/common/platform/unix/SysCSStream.cpp
> 2008-10-21 19:25:37.000000000 +0200
> ***************
> *** 51,57 ****
> --- 51,62 ----
> #include <sys/ioctl.h>
> #include <netdb.h>
> #if !defined(__OpenBSD__)
> + #ifndef _AIX
> #include <byteswap.h>
> + #endif
> + #ifdef _AIX
> + #include <strings.h>
> + #endif
> #endif
> #include <errno.h>
> #include "SysCSStream.hpp"
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great
> prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Oorexx-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
>
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel