diff options
author | Eric Wong <e@80x24.org> | 2017-03-20 18:47:26 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2017-03-20 19:13:09 +0000 |
commit | f70f5101ac040d7da3ec67c3a7c1664bb9d5193c (patch) | |
tree | 21e91d76e3d141e30fdc98739e58085c8bda2842 /ext/posix_mq/posix_mq.c | |
parent | c374ed19128f87a52f024bd7a8e56e13f7423603 (diff) | |
download | ruby_posix_mq-f70f5101ac040d7da3ec67c3a7c1664bb9d5193c.tar.gz |
We do not want ObjectSpace walkers to be able to mess with our internals.
Diffstat (limited to 'ext/posix_mq/posix_mq.c')
-rw-r--r-- | ext/posix_mq/posix_mq.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/ext/posix_mq/posix_mq.c b/ext/posix_mq/posix_mq.c index 83e9e58..4ba7d7c 100644 --- a/ext/posix_mq/posix_mq.c +++ b/ext/posix_mq/posix_mq.c @@ -523,7 +523,7 @@ static VALUE init(int argc, VALUE *argv, VALUE self) rb_sys_fail("mq_open"); } - mq->name = rb_str_dup(name); + mq->name = rb_str_new_frozen(name); if (x.oflags & O_NONBLOCK) mq->attr.mq_flags = O_NONBLOCK; @@ -887,6 +887,7 @@ static VALUE name(VALUE self) rb_raise(rb_eArgError, "can not get name of an adopted socket"); } + /* XXX compatibility: in retrospect, we could return a frozen string */ return rb_str_dup(mq->name); } @@ -907,6 +908,7 @@ static int lookup_sig(VALUE sig) VALUE mSignal = rb_const_get(rb_cObject, rb_intern("Signal")); list = rb_funcall(mSignal, rb_intern("list"), 0, 0); + rb_obj_freeze(list); rb_global_variable(&list); } |