The R Project SVN R

Rev

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

Rev 61771 Rev 61827
Line 539... Line 539...
539
 
539
 
540
static SEXP GetSrcLoc(SEXP srcref)
540
static SEXP GetSrcLoc(SEXP srcref)
541
{
541
{
542
    SEXP sep, line, result;
542
    SEXP sep, line, result;
543
    SEXP srcfile = R_GetSrcFilename(srcref);
543
    SEXP srcfile = R_GetSrcFilename(srcref);
544
    if (TYPEOF(srcref) != INTSXP || length(srcref) < 4) {
544
    if (TYPEOF(srcref) != INTSXP || length(srcref) < 4)
545
	return ScalarString(mkChar(""));
545
	return ScalarString(mkChar(""));
546
    }
-
 
547
    PROTECT(srcfile = eval( lang2( install("basename"), srcfile ), R_BaseEnv ) );
546
    SEXP e2 = PROTECT(lang2( install("basename"), srcfile));
-
 
547
    PROTECT(srcfile = eval(e2, R_BaseEnv ) );
548
    PROTECT(sep = ScalarString(mkChar("#")));
548
    PROTECT(sep = ScalarString(mkChar("#")));
549
    PROTECT(line = ScalarInteger(INTEGER(srcref)[0]));
549
    PROTECT(line = ScalarInteger(INTEGER(srcref)[0]));
550
    result = eval( lang4( install("paste0"), srcfile, sep, line ), R_BaseEnv );
550
    SEXP e = PROTECT(lang4( install("paste0"), srcfile, sep, line ));
-
 
551
    result = eval(e, R_BaseEnv );
551
    UNPROTECT(3);
552
    UNPROTECT(5);
552
    return result;
553
    return result;
553
}
554
}
554
 
555
 
555
static char errbuf[BUFSIZE];
556
static char errbuf[BUFSIZE];
556
 
557