diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-10-12 14:47:23 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-10-12 14:47:23 +0000 |
commit | d410639a6d422e0ae032f049ccfbbbb45b312d6f (patch) | |
tree | 7f967d0f5320dea31975c536b705cedc1db23db5 /error.c | |
parent | 17c48bebf87828abeb5be91ed8ba0a2b72bc5479 (diff) | |
download | ruby-d410639a6d422e0ae032f049ccfbbbb45b312d6f.tar.gz |
* compile.c (iseq_build_body), error.c (set_syserr, get_syserr),
(syserr_initialize), gc.c (define_final, rb_gc_copy_finalizer),
(run_final), hash.c (rb_hash_aref, rb_hash_lookup2),
(rb_hash_fetch_m, rb_hash_clear, rb_hash_aset, eql_i),
iseq.c (iseq_load, iseq_data_to_ary), marshal.c (r_symlink),
thread.c (rb_thread_local_aref),
variable.c (generic_ivar_remove, ivar_get, rb_const_get_0),
(rb_cvar_get), vm.c (rb_vm_check_redefinition_opt_method),
vm_insnhelper.c (vm_get_ev_const), vm_method.c (remove_method),
ext/iconv/iconv.c (map_charset): use st_data_t.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'error.c')
-rw-r--r-- | error.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -980,7 +980,7 @@ static st_table *syserr_tbl; static VALUE set_syserr(int n, const char *name) { - VALUE error; + st_data_t error; if (!st_lookup(syserr_tbl, n, &error)) { error = rb_define_class_under(rb_mErrno, name, rb_eSystemCallError); @@ -996,7 +996,7 @@ set_syserr(int n, const char *name) static VALUE get_syserr(int n) { - VALUE error; + st_data_t error; if (!st_lookup(syserr_tbl, n, &error)) { char name[8]; /* some Windows' errno have 5 digits. */ @@ -1029,11 +1029,13 @@ syserr_initialize(int argc, VALUE *argv, VALUE self) VALUE klass = rb_obj_class(self); if (klass == rb_eSystemCallError) { + st_data_t data = (st_data_t)klass; rb_scan_args(argc, argv, "11", &mesg, &error); if (argc == 1 && FIXNUM_P(mesg)) { error = mesg; mesg = Qnil; } - if (!NIL_P(error) && st_lookup(syserr_tbl, NUM2LONG(error), &klass)) { + if (!NIL_P(error) && st_lookup(syserr_tbl, NUM2LONG(error), &data)) { + klass = (VALUE)data; /* change class */ if (TYPE(self) != T_OBJECT) { /* insurance to avoid type crash */ rb_raise(rb_eTypeError, "invalid instance type"); |