mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Suppress false warnings
* vm_eval.c (rb_eval_cmd): refactor to share common code, and suppress false maybe-uninitialized warnings by old gcc. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55436 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d0b92e798f
commit
d8db69e683
2 changed files with 11 additions and 18 deletions
|
@ -139,9 +139,11 @@ LONG WINAPI rb_w32_stack_overflow_handler(struct _EXCEPTION_POINTERS *);
|
||||||
#if defined __GNUC__ && __GNUC__ == 4 && (__GNUC_MINOR__ >= 6 && __GNUC_MINOR__ <= 8)
|
#if defined __GNUC__ && __GNUC__ == 4 && (__GNUC_MINOR__ >= 6 && __GNUC_MINOR__ <= 8)
|
||||||
# define VAR_FROM_MEMORY(var) __extension__(*(__typeof__(var) volatile *)&(var))
|
# define VAR_FROM_MEMORY(var) __extension__(*(__typeof__(var) volatile *)&(var))
|
||||||
# define VAR_INITIALIZED(var) ((var) = VAR_FROM_MEMORY(var))
|
# define VAR_INITIALIZED(var) ((var) = VAR_FROM_MEMORY(var))
|
||||||
|
# define VAR_NOCLOBBERED(var) volatile var
|
||||||
#else
|
#else
|
||||||
# define VAR_FROM_MEMORY(var) (var)
|
# define VAR_FROM_MEMORY(var) (var)
|
||||||
# define VAR_INITIALIZED(var) ((void)&(var))
|
# define VAR_INITIALIZED(var) ((void)&(var))
|
||||||
|
# define VAR_NOCLOBBERED(var) var
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* clear th->state, and return the value */
|
/* clear th->state, and return the value */
|
||||||
|
|
27
vm_eval.c
27
vm_eval.c
|
@ -1548,32 +1548,23 @@ rb_eval_cmd(VALUE cmd, VALUE arg, int level)
|
||||||
{
|
{
|
||||||
int state;
|
int state;
|
||||||
volatile VALUE val = Qnil; /* OK */
|
volatile VALUE val = Qnil; /* OK */
|
||||||
volatile int safe = rb_safe_level();
|
const int VAR_NOCLOBBERED(safe) = rb_safe_level();
|
||||||
rb_thread_t *th = GET_THREAD();
|
rb_thread_t *const VAR_NOCLOBBERED(th) = GET_THREAD();
|
||||||
|
|
||||||
if (OBJ_TAINTED(cmd)) {
|
if (OBJ_TAINTED(cmd)) {
|
||||||
level = RUBY_SAFE_LEVEL_MAX;
|
level = RUBY_SAFE_LEVEL_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!RB_TYPE_P(cmd, T_STRING)) {
|
TH_PUSH_TAG(th);
|
||||||
TH_PUSH_TAG(th);
|
rb_set_safe_level_force(level);
|
||||||
rb_set_safe_level_force(level);
|
if ((state = TH_EXEC_TAG()) == 0) {
|
||||||
if ((state = TH_EXEC_TAG()) == 0) {
|
if (!RB_TYPE_P(cmd, T_STRING)) {
|
||||||
val = rb_funcall2(cmd, idCall, RARRAY_LENINT(arg),
|
val = rb_funcall2(cmd, idCall, RARRAY_LENINT(arg),
|
||||||
RARRAY_CONST_PTR(arg));
|
RARRAY_CONST_PTR(arg));
|
||||||
}
|
}
|
||||||
TH_POP_TAG();
|
else {
|
||||||
|
val = eval_string(rb_vm_top_self(), cmd, Qnil, 0, 0);
|
||||||
rb_set_safe_level_force(safe);
|
}
|
||||||
|
|
||||||
if (state)
|
|
||||||
TH_JUMP_TAG(th, state);
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
TH_PUSH_TAG(th);
|
|
||||||
if ((state = TH_EXEC_TAG()) == 0) {
|
|
||||||
val = eval_string(rb_vm_top_self(), cmd, Qnil, 0, 0);
|
|
||||||
}
|
}
|
||||||
TH_POP_TAG();
|
TH_POP_TAG();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue