# String allocation in rb\_intern

**URL:** <https://www.ruby-forum.com/t/string-allocation-in-rb-intern/107841>\
**Category:** Development\
**Created:** [June 26, 2007, 7:24pm UTC](https://www.ruby-forum.com/t/string-allocation-in-rb-intern/107841 "2007-06-26T19:24:06Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [June 26, 2007, 7:24pm UTC](https://www.ruby-forum.com/t/string-allocation-in-rb-intern/107841/1 "2007-06-26T19:24:06Z")

</div>

rb\_intern e$B$,Kh2s!“e(B(e$B$9$G$K%7%s%%k$,$”$C$F$be(B) String  
e$B%\*%V%8%'e(B  
e$B%/%H$r@8@.$7$^$9!#e(B

e$B$=$&$7$J$$$h$&$K$9$k$U$6$1$?%3!\<%I$r$D$$=q$$$F$7$^$C$?$N$G$He(B  
e$B$j$"$($:Aw$C$F$\*$-$^$9!#e(B

# Index: parse.y

— parse.y (e$B%j%S%8%g%se(B 12629)  
+++ parse.y (e$B:n6H%3%T!\<e(B)  
@@ -8390,11 +8390,17 @@  
rb\_intern2(const char \*name, long len)  
{  
const char \*m = name;

- VALUE str = rb\_str\_new(name, len);

- VALUE str;  
ID id;  
int last;
- struct RString fake\_str;
- fake\_str.basic.flags = T\_STRING|RSTRING\_NOEMBED|FL\_FREEZE;
- fake\_str.basic.klass = rb\_cString;
- fake\_str.as.heap.len = len;
- fake\_str.as.heap.ptr = name;
- fake\_str.as.heap.aux.capa = len;

- if (st\_lookup(global\_symbols.sym\_id, (st\_data\_t)str, (st\_data\_t  
\*)&id))

- if (st\_lookup(global\_symbols.sym\_id, (st\_data\_t)&fake\_str,  
(st\_data\_t \*)&id))  
return id;

- str = rb\_str\_new(name, len);  
OBJ\_FREEZE(str);  
st\_add\_direct(global\_symbols.sym\_id, (st\_data\_t)str, id);  
st\_add\_direct(global\_symbols.id\_str, id, (st\_data\_t)str);

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [June 27, 2007, 3:38am UTC](https://www.ruby-forum.com/t/string-allocation-in-rb-intern/107841/2 "2007-06-27T03:38:01Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:31064] string allocation in rb\_intern”  
on Wed, 27 Jun 2007 02:22:30 +0900, Tanaka A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
writes:

|rb\_intern e$B$,Kh2s!“e(B(e$B$9$G$K%7%s%%k$,$”$C$F$be(B) String e$B%_%V%8%'e(B  
|e$B%/%H$r@8@.$7$^$9!#e(B  
|  
|e$B$=$&$7$J$$$h$&$K$9$k$U$6$1$?%3!\<%I$r$D$$=q$$$F$7$^$C$?$N$G$He(B  
|e$B$j$"$($:Aw$C$F$_$-$^$9!#e(B

e$B$3$&$$$&!V$U$6$1$?!W%3!\<%I$OBg9%$-$J$N$G%3%\_%C%H$7$F$$$?$@$1e(B  
e$B$^$;$s$+!)e(B
