1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* eval_load.c (rb_require_safe): should restore safe level.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2007-02-21 00:14:07 +00:00
parent 975ce3add3
commit e3b0b6d5fe
3 changed files with 15 additions and 3 deletions

View file

@ -370,9 +370,15 @@ rb_require_safe(VALUE fname, int safe)
volatile VALUE errinfo = GET_THREAD()->errinfo;
rb_thread_t *th = GET_THREAD();
int state;
struct {
NODE *node;
int safe;
} volatile saved;
char *volatile ftptr = 0;
PUSH_TAG(PROT_NONE);
saved.node = ruby_current_node;
saved.safe = rb_safe_level();
if ((state = EXEC_TAG()) == 0) {
VALUE path;
long handle;
@ -422,6 +428,8 @@ rb_require_safe(VALUE fname, int safe)
free(ftptr);
}
}
ruby_current_node = saved.node;
rb_set_safe_level_force(saved.safe);
if (state) {
JUMP_TAG(state);
}