mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* variable.c (rb_global_entry, rb_f_untrace_var, rb_alias_variable,
rb_generic_ivar_table, generic_ivar_get, generic_ivar_set, generic_ivar_defined, generic_ivar_remove, rb_mark_generic_ivar, rb_free_generic_ivar, rb_copy_generic_ivar, rb_obj_instance_variables): suppress warnings. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@12563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
dd307cae31
commit
fc13ba2b9f
2 changed files with 53 additions and 34 deletions
|
@ -1,8 +1,14 @@
|
||||||
Mon Jun 18 00:58:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Mon Jun 18 01:14:10 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* variable.c (rb_path2class): get rid of dangling pointer caused by
|
* variable.c (rb_path2class): get rid of dangling pointer caused by
|
||||||
optimized out value.
|
optimized out value.
|
||||||
|
|
||||||
|
* variable.c (rb_global_entry, rb_f_untrace_var, rb_alias_variable,
|
||||||
|
rb_generic_ivar_table, generic_ivar_get, generic_ivar_set,
|
||||||
|
generic_ivar_defined, generic_ivar_remove, rb_mark_generic_ivar,
|
||||||
|
rb_free_generic_ivar, rb_copy_generic_ivar,
|
||||||
|
rb_obj_instance_variables): suppress warnings.
|
||||||
|
|
||||||
Fri Jun 15 22:33:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Fri Jun 15 22:33:29 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* common.mk (realclean): separate local and ext.
|
* common.mk (realclean): separate local and ext.
|
||||||
|
|
79
variable.c
79
variable.c
|
@ -347,8 +347,9 @@ rb_global_entry(id)
|
||||||
ID id;
|
ID id;
|
||||||
{
|
{
|
||||||
struct global_entry *entry;
|
struct global_entry *entry;
|
||||||
|
st_data_t data;
|
||||||
|
|
||||||
if (!st_lookup(rb_global_tbl, id, (st_data_t *)&entry)) {
|
if (!st_lookup(rb_global_tbl, id, &data)) {
|
||||||
struct global_variable *var;
|
struct global_variable *var;
|
||||||
entry = ALLOC(struct global_entry);
|
entry = ALLOC(struct global_entry);
|
||||||
var = ALLOC(struct global_variable);
|
var = ALLOC(struct global_variable);
|
||||||
|
@ -364,6 +365,9 @@ rb_global_entry(id)
|
||||||
var->trace = 0;
|
var->trace = 0;
|
||||||
st_add_direct(rb_global_tbl, id, (st_data_t)entry);
|
st_add_direct(rb_global_tbl, id, (st_data_t)entry);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
entry = (struct global_entry *)data;
|
||||||
|
}
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -641,14 +645,15 @@ rb_f_untrace_var(argc, argv)
|
||||||
ID id;
|
ID id;
|
||||||
struct global_entry *entry;
|
struct global_entry *entry;
|
||||||
struct trace_var *trace;
|
struct trace_var *trace;
|
||||||
|
st_data_t data;
|
||||||
|
|
||||||
rb_scan_args(argc, argv, "11", &var, &cmd);
|
rb_scan_args(argc, argv, "11", &var, &cmd);
|
||||||
id = rb_to_id(var);
|
id = rb_to_id(var);
|
||||||
if (!st_lookup(rb_global_tbl, id, (st_data_t *)&entry)) {
|
if (!st_lookup(rb_global_tbl, id, &data)) {
|
||||||
rb_name_error(id, "undefined global variable %s", rb_id2name(id));
|
rb_name_error(id, "undefined global variable %s", rb_id2name(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
trace = entry->var->trace;
|
trace = (entry = (struct global_entry *)data)->var->trace;
|
||||||
if (NIL_P(cmd)) {
|
if (NIL_P(cmd)) {
|
||||||
VALUE ary = rb_ary_new();
|
VALUE ary = rb_ary_new();
|
||||||
|
|
||||||
|
@ -802,17 +807,18 @@ rb_alias_variable(name1, name2)
|
||||||
ID name2;
|
ID name2;
|
||||||
{
|
{
|
||||||
struct global_entry *entry1, *entry2;
|
struct global_entry *entry1, *entry2;
|
||||||
|
st_data_t data1;
|
||||||
|
|
||||||
if (rb_safe_level() >= 4)
|
if (rb_safe_level() >= 4)
|
||||||
rb_raise(rb_eSecurityError, "Insecure: can't alias global variable");
|
rb_raise(rb_eSecurityError, "Insecure: can't alias global variable");
|
||||||
|
|
||||||
entry2 = rb_global_entry(name2);
|
entry2 = rb_global_entry(name2);
|
||||||
if (!st_lookup(rb_global_tbl, name1, (st_data_t *)&entry1)) {
|
if (!st_lookup(rb_global_tbl, name1, &data1)) {
|
||||||
entry1 = ALLOC(struct global_entry);
|
entry1 = ALLOC(struct global_entry);
|
||||||
entry1->id = name1;
|
entry1->id = name1;
|
||||||
st_add_direct(rb_global_tbl, name1, (st_data_t)entry1);
|
st_add_direct(rb_global_tbl, name1, (st_data_t)entry1);
|
||||||
}
|
}
|
||||||
else if (entry1->var != entry2->var) {
|
else if ((entry1 = (struct global_entry *)data1)->var != entry2->var) {
|
||||||
struct global_variable *var = entry1->var;
|
struct global_variable *var = entry1->var;
|
||||||
if (var->block_trace) {
|
if (var->block_trace) {
|
||||||
rb_raise(rb_eRuntimeError, "can't alias in tracer");
|
rb_raise(rb_eRuntimeError, "can't alias in tracer");
|
||||||
|
@ -842,12 +848,12 @@ st_table*
|
||||||
rb_generic_ivar_table(obj)
|
rb_generic_ivar_table(obj)
|
||||||
VALUE obj;
|
VALUE obj;
|
||||||
{
|
{
|
||||||
st_table *tbl;
|
st_data_t tbl;
|
||||||
|
|
||||||
if (!FL_TEST(obj, FL_EXIVAR)) return 0;
|
if (!FL_TEST(obj, FL_EXIVAR)) return 0;
|
||||||
if (!generic_iv_tbl) return 0;
|
if (!generic_iv_tbl) return 0;
|
||||||
if (!st_lookup(generic_iv_tbl, obj, (st_data_t *)&tbl)) return 0;
|
if (!st_lookup(generic_iv_tbl, obj, &tbl)) return 0;
|
||||||
return tbl;
|
return (st_table *)tbl;
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
@ -856,15 +862,15 @@ generic_ivar_get(obj, id, warn)
|
||||||
ID id;
|
ID id;
|
||||||
int warn;
|
int warn;
|
||||||
{
|
{
|
||||||
st_table *tbl;
|
st_data_t tbl;
|
||||||
VALUE val;
|
VALUE val;
|
||||||
|
|
||||||
if (generic_iv_tbl) {
|
if (generic_iv_tbl) {
|
||||||
if (st_lookup(generic_iv_tbl, obj, (st_data_t *)&tbl)) {
|
if (st_lookup(generic_iv_tbl, obj, &tbl)) {
|
||||||
if (st_lookup(tbl, id, &val)) {
|
if (st_lookup((st_table *)tbl, id, &val)) {
|
||||||
return val;
|
return val;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (warn) {
|
if (warn) {
|
||||||
rb_warning("instance variable %s not initialized", rb_id2name(id));
|
rb_warning("instance variable %s not initialized", rb_id2name(id));
|
||||||
|
@ -879,6 +885,7 @@ generic_ivar_set(obj, id, val)
|
||||||
VALUE val;
|
VALUE val;
|
||||||
{
|
{
|
||||||
st_table *tbl;
|
st_table *tbl;
|
||||||
|
st_data_t data;
|
||||||
|
|
||||||
if (rb_special_const_p(obj)) {
|
if (rb_special_const_p(obj)) {
|
||||||
special_generic_ivar = 1;
|
special_generic_ivar = 1;
|
||||||
|
@ -887,14 +894,14 @@ generic_ivar_set(obj, id, val)
|
||||||
generic_iv_tbl = st_init_numtable();
|
generic_iv_tbl = st_init_numtable();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!st_lookup(generic_iv_tbl, obj, (st_data_t *)&tbl)) {
|
if (!st_lookup(generic_iv_tbl, obj, &data)) {
|
||||||
FL_SET(obj, FL_EXIVAR);
|
FL_SET(obj, FL_EXIVAR);
|
||||||
tbl = st_init_numtable();
|
tbl = st_init_numtable();
|
||||||
st_add_direct(generic_iv_tbl, obj, (st_data_t)tbl);
|
st_add_direct(generic_iv_tbl, obj, (st_data_t)tbl);
|
||||||
st_add_direct(tbl, id, val);
|
st_add_direct(tbl, id, val);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
st_insert(tbl, id, val);
|
st_insert((st_table *)data, id, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
@ -903,10 +910,12 @@ generic_ivar_defined(obj, id)
|
||||||
ID id;
|
ID id;
|
||||||
{
|
{
|
||||||
st_table *tbl;
|
st_table *tbl;
|
||||||
|
st_data_t data;
|
||||||
VALUE val;
|
VALUE val;
|
||||||
|
|
||||||
if (!generic_iv_tbl) return Qfalse;
|
if (!generic_iv_tbl) return Qfalse;
|
||||||
if (!st_lookup(generic_iv_tbl, obj, (st_data_t *)&tbl)) return Qfalse;
|
if (!st_lookup(generic_iv_tbl, obj, &data)) return Qfalse;
|
||||||
|
tbl = (st_table *)data;
|
||||||
if (st_lookup(tbl, id, &val)) {
|
if (st_lookup(tbl, id, &val)) {
|
||||||
return Qtrue;
|
return Qtrue;
|
||||||
}
|
}
|
||||||
|
@ -920,14 +929,16 @@ generic_ivar_remove(obj, id, valp)
|
||||||
VALUE *valp;
|
VALUE *valp;
|
||||||
{
|
{
|
||||||
st_table *tbl;
|
st_table *tbl;
|
||||||
|
st_data_t data;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (!generic_iv_tbl) return 0;
|
if (!generic_iv_tbl) return 0;
|
||||||
if (!st_lookup(generic_iv_tbl, obj, (st_data_t *)&tbl)) return 0;
|
if (!st_lookup(generic_iv_tbl, obj, &data)) return 0;
|
||||||
|
tbl = (st_table *)data;
|
||||||
status = st_delete(tbl, &id, valp);
|
status = st_delete(tbl, &id, valp);
|
||||||
if (tbl->num_entries == 0) {
|
if (tbl->num_entries == 0) {
|
||||||
st_delete(generic_iv_tbl, &obj, (st_data_t *)&tbl);
|
st_delete(generic_iv_tbl, &obj, &data);
|
||||||
st_free_table(tbl);
|
st_free_table((st_table *)data);
|
||||||
}
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
@ -936,11 +947,11 @@ void
|
||||||
rb_mark_generic_ivar(obj)
|
rb_mark_generic_ivar(obj)
|
||||||
VALUE obj;
|
VALUE obj;
|
||||||
{
|
{
|
||||||
st_table *tbl;
|
st_data_t tbl;
|
||||||
|
|
||||||
if (!generic_iv_tbl) return;
|
if (!generic_iv_tbl) return;
|
||||||
if (st_lookup(generic_iv_tbl, obj, (st_data_t *)&tbl)) {
|
if (st_lookup(generic_iv_tbl, obj, &tbl)) {
|
||||||
rb_mark_tbl(tbl);
|
rb_mark_tbl((st_table *)tbl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -976,24 +987,26 @@ void
|
||||||
rb_free_generic_ivar(obj)
|
rb_free_generic_ivar(obj)
|
||||||
VALUE obj;
|
VALUE obj;
|
||||||
{
|
{
|
||||||
st_table *tbl;
|
st_data_t tbl;
|
||||||
|
|
||||||
if (st_delete(generic_iv_tbl, &obj, (st_data_t *)&tbl))
|
if (!generic_iv_tbl) return;
|
||||||
st_free_table(tbl);
|
if (st_delete(generic_iv_tbl, &obj, &tbl))
|
||||||
|
st_free_table((st_table *)tbl);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
rb_copy_generic_ivar(clone, obj)
|
rb_copy_generic_ivar(clone, obj)
|
||||||
VALUE clone, obj;
|
VALUE clone, obj;
|
||||||
{
|
{
|
||||||
st_table *tbl;
|
st_data_t data;
|
||||||
|
|
||||||
if (!generic_iv_tbl) return;
|
if (!generic_iv_tbl) return;
|
||||||
if (st_lookup(generic_iv_tbl, obj, (st_data_t *)&tbl)) {
|
if (!FL_TEST(obj, FL_EXIVAR)) return;
|
||||||
st_table *old;
|
if (st_lookup(generic_iv_tbl, obj, &data)) {
|
||||||
|
st_table *tbl = (st_table *)data;
|
||||||
|
|
||||||
if (st_lookup(generic_iv_tbl, clone, (st_data_t *)&old)) {
|
if (st_lookup(generic_iv_tbl, clone, &data)) {
|
||||||
st_free_table(old);
|
st_free_table((st_table *)data);
|
||||||
st_insert(generic_iv_tbl, clone, (st_data_t)st_copy(tbl));
|
st_insert(generic_iv_tbl, clone, (st_data_t)st_copy(tbl));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -1134,10 +1147,10 @@ rb_obj_instance_variables(obj)
|
||||||
default:
|
default:
|
||||||
if (!generic_iv_tbl) break;
|
if (!generic_iv_tbl) break;
|
||||||
if (FL_TEST(obj, FL_EXIVAR) || rb_special_const_p(obj)) {
|
if (FL_TEST(obj, FL_EXIVAR) || rb_special_const_p(obj)) {
|
||||||
st_table *tbl;
|
st_data_t tbl;
|
||||||
|
|
||||||
if (st_lookup(generic_iv_tbl, obj, (st_data_t *)&tbl)) {
|
if (st_lookup(generic_iv_tbl, obj, &tbl)) {
|
||||||
st_foreach_safe(tbl, ivar_i, ary);
|
st_foreach_safe((st_table *)tbl, ivar_i, ary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue