summaryrefslogtreecommitdiff
path: root/eval_error.ci
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-06-24 20:33:04 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-06-24 20:33:04 +0000
commitf58eb1e276a2db3ff2062c80a7acf97860aca8ca (patch)
tree88b03ca1962b2997f5f8e749c5f3e9c04965f100 /eval_error.ci
parent6bd0345627f383f1d1b041edba2a255ea4cdfb9b (diff)
* eval.c: remove ruby_current_node and change eval() prototype.
fix to use rb_sourcefile/line() instead of ruby_sourcefile/line. * error.c, eval_error.ci, eval_load.c, eval_safe.ci, gc.c, include/ruby/intern.h, parse.y, process.c, ruby.c: ditto. * vm.c: fix spaces. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval_error.ci')
-rw-r--r--eval_error.ci47
1 files changed, 39 insertions, 8 deletions
diff --git a/eval_error.ci b/eval_error.ci
index 63428991f3..d719953f2d 100644
--- a/eval_error.ci
+++ b/eval_error.ci
@@ -2,6 +2,34 @@
* included by eval.c
*/
+const char *
+rb_sourcefile(void)
+{
+ rb_thread_t *th = GET_THREAD();
+ rb_control_frame_t *cfp = vm_get_ruby_level_cfp(th, th->cfp);
+
+ if (cfp) {
+ return RSTRING_PTR(cfp->iseq->filename);
+ }
+ else {
+ return 0;
+ }
+}
+
+int
+rb_sourceline(void)
+{
+ rb_thread_t *th = GET_THREAD();
+ rb_control_frame_t *cfp = vm_get_ruby_level_cfp(th, th->cfp);
+
+ if (cfp) {
+ return vm_get_sourceline(cfp);
+ }
+ else {
+ return 0;
+ }
+}
+
static void
warn_printf(const char *fmt, ...)
{
@@ -20,16 +48,19 @@ warn_printf(const char *fmt, ...)
static void
error_pos(void)
{
- if (ruby_sourcefile) {
- if (ruby_sourceline == 0) {
- warn_printf("%s", ruby_sourcefile);
+ const char *sourcefile = rb_sourcefile();
+ int sourceline = rb_sourceline();
+
+ if (sourcefile) {
+ if (sourceline == 0) {
+ warn_printf("%s", sourcefile);
}
else if (rb_frame_callee()) {
- warn_printf("%s:%d:in `%s'", ruby_sourcefile, ruby_sourceline,
+ warn_printf("%s:%d:in `%s'", sourcefile, sourceline,
rb_id2name(rb_frame_callee()));
}
else {
- warn_printf("%s:%d", ruby_sourcefile, ruby_sourceline);
+ warn_printf("%s:%d", sourcefile, sourceline);
}
}
}
@@ -72,10 +103,10 @@ error_print(void)
if (EXEC_TAG())
goto error;
if (NIL_P(errat)) {
- if (ruby_sourcefile)
- warn_printf("%s:%d", ruby_sourcefile, ruby_sourceline);
+ if (rb_sourcefile())
+ warn_printf("%s:%d", rb_sourcefile(), rb_sourceline());
else
- warn_printf("%d", ruby_sourceline);
+ warn_printf("%d", rb_sourceline());
}
else if (RARRAY_LEN(errat) == 0) {
error_pos();