diff options
| author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-09-08 07:55:51 +0000 |
|---|---|---|
| committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-09-08 07:55:51 +0000 |
| commit | 6c5f7c4466c58ffbe30389361d568eb01226026c (patch) | |
| tree | 47ea4bc316d46ceddd5f855827e17c943f150a48 /string.c | |
| parent | 0e10803f6962a751bf476e08e0d5d139377fcf2a (diff) | |
| download | ruby-6c5f7c4466c58ffbe30389361d568eb01226026c.tar.gz ruby-6c5f7c4466c58ffbe30389361d568eb01226026c.tar.xz ruby-6c5f7c4466c58ffbe30389361d568eb01226026c.zip | |
* string.c (str_alloc): should allocate a String object, even when
asked to allocate a Symbol object. [ruby-dev:29529]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@10890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
| -rw-r--r-- | string.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -119,6 +119,9 @@ str_alloc(VALUE klass) NEWOBJ(str, struct RString); OBJSETUP(str, klass, T_STRING); + if (klass == rb_cSymbol) { + RBASIC(str)->klass = rb_cString; + } str->as.heap.ptr = 0; str->as.heap.len = 0; str->as.heap.aux.capa = 0; @@ -135,7 +138,6 @@ str_new(VALUE klass, const char *ptr, long len) rb_raise(rb_eArgError, "negative string size (or size too big)"); } - if (klass == rb_cSymbol) klass = rb_cString; str = str_alloc(klass); if (len > RSTRING_EMBED_LEN_MAX) { RSTRING(str)->as.heap.aux.capa = len; |
