about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--ext/posix_mq/posix_mq.c4
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);
         }