From 37b862c6371f3fa4b8201ce0a3420e3f75d899e0 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 24 May 2013 22:03:41 +0000 Subject: call rb_frame_callee() only once * eval_error.c (error_pos): no needs to call rb_frame_callee() twice. * safe.c (rb_secure, rb_insecure_operation): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval_error.c | 5 +++-- safe.c | 10 ++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/eval_error.c b/eval_error.c index 3ad2915ccc..8a5ef273c1 100644 --- a/eval_error.c +++ b/eval_error.c @@ -25,12 +25,13 @@ error_pos(void) int sourceline = rb_sourceline(); if (sourcefile) { + ID caller_name; if (sourceline == 0) { warn_printf("%s", sourcefile); } - else if (rb_frame_callee()) { + else if ((caller_name = rb_frame_callee()) != 0) { warn_printf("%s:%d:in `%s'", sourcefile, sourceline, - rb_id2name(rb_frame_callee())); + rb_id2name(caller_name)); } else { warn_printf("%s:%d", sourcefile, sourceline); diff --git a/safe.c b/safe.c index 05c1aa395b..cc07513c64 100644 --- a/safe.c +++ b/safe.c @@ -79,9 +79,10 @@ void rb_secure(int level) { if (level <= rb_safe_level()) { - if (rb_frame_callee()) { + ID caller_name = rb_frame_callee(); + if (caller_name) { rb_raise(rb_eSecurityError, "Insecure operation `%s' at level %d", - rb_id2name(rb_frame_callee()), rb_safe_level()); + rb_id2name(caller_name), rb_safe_level()); } else { rb_raise(rb_eSecurityError, "Insecure operation at level %d", @@ -100,9 +101,10 @@ rb_secure_update(VALUE obj) void rb_insecure_operation(void) { - if (rb_frame_callee()) { + ID caller_name = rb_frame_callee(); + if (caller_name) { rb_raise(rb_eSecurityError, "Insecure operation - %s", - rb_id2name(rb_frame_callee())); + rb_id2name(caller_name)); } else { rb_raise(rb_eSecurityError, "Insecure operation: -r"); -- cgit v1.2.3