Sorry, it should read "Nil" in the text rather than "NULL".
---rony
On 19.03.2011 20:12, Rony G. Flatscher wrote:
> In a bug report which relates to BSF4ooRexx Jean-Louis was kind enough
> to look into the issue and came up with an analysis in
> <https://sourceforge.net/tracker/?func=detail&atid=684730&aid=3205263&group_id=119701>.
>
> According to his findings, the RexxCondition member "program" was NULL
> in the supplied example. Before changing/adapting the code, I was
> wondering whether it is truly possible for the "program" member to be
> NULL in the case of a SYNTAX condition?
>
> What about the members "errortext", "code", "message", could they be
> NULL as well in SYNTAX condition?
>
> Is it safe to assume that the member "conditionName" will always have
> a string value?
>
> ---rony
>
> P.S.: Here is the code that uses DecodeConditionInfo(...) to create a
> Rexx-like error message which then gets forwarded to the Java side,
> where the line causing the crash is highlighted in bold red.
>
> // allocates and creates a Rexx-like error message
> inline char * RgfCreateRexxlikeErrorInfo (RexxThreadContext *rtc,
> RexxDirectoryObject condObj, const char * header)
> {
> rtc->ClearCondition();
>
> RexxCondition cond;
> rtc->DecodeConditionInfo(condObj, &cond);
>
> char *msg=(char *)RexxAllocateMemory( 4096 );
> msg[0]=0;
>
> // format message according to exception type
> if (rtc->SendMessage1(cond.conditionName, "EQUALS",
> rtc->String("SYNTAX"))==rtc->True()) // SYNTAX condition ?
> {
> // will only use 1024 of it
> char const
> *line1=rtc->CString(rtc->SendMessage0(rtc->DirectoryAt(condObj, "TRACEBACK"),
> "FIRSTITEM")) ; // first traceback line=error line
>
> char line2[2048]=""; // will only use 1024 of it
> SNPRINTF(line2, 2048, "Error %d running %.512s line %d: %.1024s",
> * (int) cond.rc,
> rtc->CString(cond.program),*
> (int) cond.position,
> rtc->CString(cond.errortext) );
>
> char line3[2048]=""; // will only use 1024 of it
> SNPRINTF( line3, 2048, "Error %d.%d: %.1024s", (int) (cond.code
> / 1000),
> (int) (cond.code % 1000),
>
> rtc->CString(cond.message));
>
> SNPRINTF( msg, 4096, "%.16s%.512s:\n%.1024s\n%.1024s\n%.1024s",
> DLLNAME, header, line1, line2, line3);
>
> }
> else
> {
> SNPRINTF( msg, 4096, "%.16s%.512s: Rexx condition [%.512s]
> raised", DLLNAME, header, rtc->CString(cond.conditionName));
> }
>
> return msg;
> }
>
>
>
------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel