/* * call-seq: * obj.freeze => obj * * Prevents further modifications to <i>obj</i>. A * <code>TypeError</code> will be raised if modification is attempted. * There is no way to unfreeze a frozen object. See also * <code>Object#frozen?</code>. * * a = [ "a", "b", "c" ] * a.freeze * a << "z" * * <em>produces:</em> * * prog.rb:3:in `<<': can't modify frozen array (TypeError) * from prog.rb:3 */ VALUE rb_obj_freeze(obj) VALUE obj; { if (!OBJ_FROZEN(obj)) { if (rb_safe_level() >= 4 && !OBJ_TAINTED(obj)) { rb_raise(rb_eSecurityError, "Insecure: can't freeze object"); } OBJ_FREEZE(obj); } return obj; }