summaryrefslogtreecommitdiffhomepage
path: root/src/array.c
diff options
context:
space:
mode:
authorTakashi Kokubun <[email protected]>2016-12-11 01:45:38 +0900
committerTakashi Kokubun <[email protected]>2016-12-11 03:44:15 +0900
commit10bb7ad693e7c7443de924a39c1fedb4461108ba (patch)
tree8ba3d7bd9992f0097f99a034012565adb43c4d4a /src/array.c
parent3cc913490b708fe4d0e78e48f86e6e39cf3d8576 (diff)
downloadmruby-10bb7ad693e7c7443de924a39c1fedb4461108ba.tar.gz
mruby-10bb7ad693e7c7443de924a39c1fedb4461108ba.zip
Implement Object#freeze
Diffstat (limited to 'src/array.c')
-rw-r--r--src/array.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/array.c b/src/array.c
index f6599bd5b..c6bac7b47 100644
--- a/src/array.c
+++ b/src/array.c
@@ -108,6 +108,10 @@ ary_fill_with_nil(mrb_value *ptr, mrb_int size)
static void
ary_modify(mrb_state *mrb, struct RArray *a)
{
+ if (RBASIC_FROZEN_P(a)) {
+ mrb_raise(mrb, E_RUNTIME_ERROR, "can't modify frozen array");
+ }
+
if (ARY_SHARED_P(a)) {
mrb_shared_array *shared = a->aux.shared;