31 lines
1.3 KiB
C
31 lines
1.3 KiB
C
|
/****************************************************************
|
||
|
* *
|
||
|
* Copyright 2001 Sanchez Computer Associates, Inc. *
|
||
|
* *
|
||
|
* This source code contains the intellectual property *
|
||
|
* of its copyright holder(s), and is made available *
|
||
|
* under a license. If you do not know the terms of *
|
||
|
* the license, please stop and do not read further. *
|
||
|
* *
|
||
|
****************************************************************/
|
||
|
|
||
|
#include "mdef.h"
|
||
|
#include "op.h"
|
||
|
|
||
|
void op_rterror(int4 sig, boolean_t subrtn)
|
||
|
{
|
||
|
/* If this module is called as an M subroutine, the message we generate
|
||
|
will not have the correct M line-of-code reference because (1) we have
|
||
|
already created the stackframe for the subroutine call we are not now
|
||
|
going to make and (2) the code generator puts the code to call us
|
||
|
at the end of the module. Therefore the Mref generated will be the last line
|
||
|
in the module. To get around this, if this is a subroutine/function call
|
||
|
we will unwind this (bogus) frame prior to making the error call so the
|
||
|
M reference in the error message will be the actual subroutine call itself
|
||
|
instead of the last physical line of the module. Inline calls will not
|
||
|
do an unwind().
|
||
|
*/
|
||
|
if (subrtn) op_unwind();
|
||
|
rts_error(VARLSTCNT(2) sig, 0);
|
||
|
}
|