diff options
| author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-02-01 03:12:21 +0000 |
|---|---|---|
| committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-02-01 03:12:21 +0000 |
| commit | b77b7c30d4855734384a095db41a734d315bb8fa (patch) | |
| tree | ae6cd78921bf626d54145b5485474bf59c3dceb4 /object.c | |
| parent | ff338e4e581cc264abf4c5bfd3501bb77c16335f (diff) | |
| download | ruby-b77b7c30d4855734384a095db41a734d315bb8fa.tar.gz ruby-b77b7c30d4855734384a095db41a734d315bb8fa.tar.xz ruby-b77b7c30d4855734384a095db41a734d315bb8fa.zip | |
2000-02-01
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@611 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'object.c')
| -rw-r--r-- | object.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -297,6 +297,25 @@ rb_obj_untaint(obj) return obj; } +VALUE +rb_obj_freeze(obj) + VALUE obj; +{ + if (rb_safe_level() >= 4 && !OBJ_TAINTED(obj)) + rb_raise(rb_eSecurityError, "Insecure: can't freeze object"); + + OBJ_FREEZE(obj); + return obj; +} + +static VALUE +rb_obj_frozen_p(obj) + VALUE obj; +{ + if (OBJ_FROZEN(obj)) return Qtrue; + return Qfalse; +} + static VALUE nil_to_i(obj) VALUE obj; @@ -1004,6 +1023,8 @@ Init_Object() rb_define_method(rb_mKernel, "taint", rb_obj_taint, 0); rb_define_method(rb_mKernel, "tainted?", rb_obj_tainted, 0); rb_define_method(rb_mKernel, "untaint", rb_obj_untaint, 0); + rb_define_method(rb_mKernel, "freeze", rb_obj_freeze, 0); + rb_define_method(rb_mKernel, "frozen?", rb_obj_frozen_p, 0); rb_define_method(rb_mKernel, "to_a", rb_any_to_a, 0); rb_define_method(rb_mKernel, "to_s", rb_any_to_s, 0); |
