diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-05-14 12:26:22 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-05-14 12:26:22 +0000 |
commit | 0cf6e773be4ab563decd19c6a285568e489e80ea (patch) | |
tree | 4fee6360c84046e54c1e72171701df114372750e /ext | |
parent | 7268344d38a948ee9bc25c85aeb4a1b60969a29a (diff) |
* eval.c (eval): warning during eval should not cause deadlock.
[ruby-talk:98651]
* eval.c (rb_eval): raise TypeError exception for superclass
mismatch. [ruby-dev:39567]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6310 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r-- | ext/dbm/dbm.c | 18 | ||||
-rw-r--r-- | ext/gdbm/gdbm.c | 22 | ||||
-rw-r--r-- | ext/sdbm/init.c | 18 |
3 files changed, 41 insertions, 17 deletions
diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c index c422394405..e9e2a6e1e9 100644 --- a/ext/dbm/dbm.c +++ b/ext/dbm/dbm.c @@ -280,6 +280,14 @@ fdbm_values_at(argc, argv, obj) return new; } +static void +fdbm_modify(obj) + VALUE obj; +{ + rb_secure(4); + if (OBJ_FROZEN(obj)) rb_error_frozen("DBM"); +} + static VALUE fdbm_delete(obj, keystr) VALUE obj, keystr; @@ -289,7 +297,7 @@ fdbm_delete(obj, keystr) DBM *dbm; VALUE valstr; - rb_secure(4); + fdbm_modify(obj); StringValue(keystr); key.dptr = RSTRING(keystr)->ptr; key.dsize = RSTRING(keystr)->len; @@ -325,7 +333,7 @@ fdbm_shift(obj) DBM *dbm; VALUE keystr, valstr; - rb_secure(4); + fdbm_modify(obj); GetDBM(obj, dbmp); dbm = dbmp->di_dbm; dbmp->di_size = -1; @@ -351,7 +359,7 @@ fdbm_delete_if(obj) VALUE ret, ary = rb_ary_new(); int i, status = 0, n; - rb_secure(4); + fdbm_modify(obj); GetDBM(obj, dbmp); dbm = dbmp->di_dbm; n = dbmp->di_size; @@ -388,7 +396,7 @@ fdbm_clear(obj) struct dbmdata *dbmp; DBM *dbm; - rb_secure(4); + fdbm_modify(obj); GetDBM(obj, dbmp); dbm = dbmp->di_dbm; dbmp->di_size = -1; @@ -471,7 +479,7 @@ fdbm_store(obj, keystr, valstr) struct dbmdata *dbmp; DBM *dbm; - rb_secure(4); + fdbm_modify(obj); keystr = rb_obj_as_string(keystr); key.dptr = RSTRING(keystr)->ptr; diff --git a/ext/gdbm/gdbm.c b/ext/gdbm/gdbm.c index ee56fbf5d1..799445a89c 100644 --- a/ext/gdbm/gdbm.c +++ b/ext/gdbm/gdbm.c @@ -387,6 +387,14 @@ fgdbm_values_at(argc, argv, obj) return new; } +static void +rb_gdbm_modify(obj) + VALUE obj; +{ + rb_secure(4); + if (OBJ_FROZEN(obj)) rb_error_frozen("GDBM"); +} + static VALUE rb_gdbm_delete(obj, keystr) VALUE obj, keystr; @@ -395,7 +403,7 @@ rb_gdbm_delete(obj, keystr) struct dbmdata *dbmp; GDBM_FILE dbm; - rb_secure(4); + rb_gdbm_modify(obj); StringValue(keystr); key.dptr = RSTRING(keystr)->ptr; key.dsize = RSTRING(keystr)->len; @@ -436,7 +444,7 @@ fgdbm_shift(obj) GDBM_FILE dbm; VALUE keystr, valstr; - rb_secure(4); + rb_gdbm_modify(obj); GetDBM(obj, dbmp); dbm = dbmp->di_dbm; @@ -458,7 +466,7 @@ fgdbm_delete_if(obj) VALUE ret, ary = rb_ary_new(); int i, status = 0, n; - rb_secure(4); + rb_gdbm_modify(obj); GetDBM(obj, dbmp); dbm = dbmp->di_dbm; n = dbmp->di_size; @@ -489,7 +497,7 @@ fgdbm_clear(obj) struct dbmdata *dbmp; GDBM_FILE dbm; - rb_secure(4); + rb_gdbm_modify(obj); GetDBM(obj, dbmp); dbm = dbmp->di_dbm; dbmp->di_size = -1; @@ -588,7 +596,7 @@ fgdbm_store(obj, keystr, valstr) struct dbmdata *dbmp; GDBM_FILE dbm; - rb_secure(4); + rb_gdbm_modify(obj); StringValue(keystr); key.dptr = RSTRING(keystr)->ptr; key.dsize = RSTRING(keystr)->len; @@ -830,7 +838,7 @@ fgdbm_reorganize(obj) struct dbmdata *dbmp; GDBM_FILE dbm; - rb_secure(4); + rb_gdbm_modify(obj); GetDBM(obj, dbmp); dbm = dbmp->di_dbm; gdbm_reorganize(dbm); @@ -844,7 +852,7 @@ fgdbm_sync(obj) struct dbmdata *dbmp; GDBM_FILE dbm; - rb_secure(4); + rb_gdbm_modify(obj); GetDBM(obj, dbmp); dbm = dbmp->di_dbm; gdbm_sync(dbm); diff --git a/ext/sdbm/init.c b/ext/sdbm/init.c index 4352d21f9c..2dfd17196c 100644 --- a/ext/sdbm/init.c +++ b/ext/sdbm/init.c @@ -268,6 +268,14 @@ fsdbm_values_at(argc, argv, obj) return new; } +static void +fdbm_modify(obj) + VALUE obj; +{ + rb_secure(4); + if (OBJ_FROZEN(obj)) rb_error_frozen("SDBM"); +} + static VALUE fsdbm_delete(obj, keystr) VALUE obj, keystr; @@ -277,7 +285,7 @@ fsdbm_delete(obj, keystr) DBM *dbm; VALUE valstr; - rb_secure(4); + fdbm_modify(obj); StringValue(keystr); key.dptr = RSTRING(keystr)->ptr; key.dsize = RSTRING(keystr)->len; @@ -314,7 +322,7 @@ fsdbm_shift(obj) DBM *dbm; VALUE keystr, valstr; - rb_secure(4); + fdbm_modify(obj); GetDBM(obj, dbmp); dbm = dbmp->di_dbm; @@ -342,7 +350,7 @@ fsdbm_delete_if(obj) VALUE ret, ary = rb_ary_new(); int i, status = 0, n; - rb_secure(4); + fdbm_modify(obj); GetDBM(obj, dbmp); dbm = dbmp->di_dbm; n = dbmp->di_size; @@ -378,7 +386,7 @@ fsdbm_clear(obj) struct dbmdata *dbmp; DBM *dbm; - rb_secure(4); + fdbm_modify(obj); GetDBM(obj, dbmp); dbm = dbmp->di_dbm; dbmp->di_size = -1; @@ -466,7 +474,7 @@ fsdbm_store(obj, keystr, valstr) return Qnil; } - rb_secure(4); + fdbm_modify(obj); keystr = rb_obj_as_string(keystr); key.dptr = RSTRING(keystr)->ptr; |