summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eval_error.c5
-rw-r--r--safe.c10
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");