The R Project SVN R

Rev

Rev 25526 | Rev 26353 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 25526 Rev 26352
Line 1088... Line 1088...
1088
    return R_NilValue;
1088
    return R_NilValue;
1089
}
1089
}
1090
 
1090
 
1091
SEXP do_signalCondition(SEXP call, SEXP op, SEXP args, SEXP rho)
1091
SEXP do_signalCondition(SEXP call, SEXP op, SEXP args, SEXP rho)
1092
{
1092
{
1093
    SEXP list, cond, msg, ecall;
1093
    SEXP list, cond, msg, ecall, oldstack;
1094
 
1094
 
1095
    checkArity(op, args);
1095
    checkArity(op, args);
1096
 
1096
 
1097
    cond = CAR(args);
1097
    cond = CAR(args);
1098
    msg = CADR(args);
1098
    msg = CADR(args);
1099
    ecall = CADDR(args);
1099
    ecall = CADDR(args);
1100
 
1100
 
-
 
1101
    PROTECT(oldstack = R_HandlerStack);
1101
    while ((list = findConditionHandler(cond)) != R_NilValue) {
1102
    while ((list = findConditionHandler(cond)) != R_NilValue) {
1102
	SEXP entry = CAR(list);
1103
	SEXP entry = CAR(list);
1103
	R_HandlerStack = CDR(list);
1104
	R_HandlerStack = CDR(list);
1104
	if (IS_CALLING_ENTRY(entry)) {
1105
	if (IS_CALLING_ENTRY(entry)) {
1105
	    SEXP h = ENTRY_HANDLER(entry);
1106
	    SEXP h = ENTRY_HANDLER(entry);
Line 1117... Line 1118...
1117
		UNPROTECT(1);
1118
		UNPROTECT(1);
1118
	    }
1119
	    }
1119
	}
1120
	}
1120
	else gotoExitingHandler(cond, call, entry);
1121
	else gotoExitingHandler(cond, call, entry);
1121
    }
1122
    }
-
 
1123
    R_HandlerStack = oldstack;
-
 
1124
    UNPROTECT(1);
1122
    return R_NilValue;
1125
    return R_NilValue;
1123
}
1126
}
1124
 
1127
 
1125
void R_InsertRestartHandlers(RCNTXT *cptr, Rboolean browser)
1128
void R_InsertRestartHandlers(RCNTXT *cptr, Rboolean browser)
1126
{
1129
{