# "string"\[/str/\]=:not\_string dumps core

**URL:** <https://www.ruby-forum.com/t/string-str-not-string-dumps-core/114675>\
**Category:** Development\
**Created:** [September 17, 2007, 1:24pm UTC](https://www.ruby-forum.com/t/string-str-not-string-dumps-core/114675 "2007-09-17T13:24:03Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [September 17, 2007, 1:24pm UTC](https://www.ruby-forum.com/t/string-str-not-string-dumps-core/114675/1 "2007-09-17T13:24:03Z")

</div>

e$B$J$+$@$G$9!#e(B

[http://yowaken.dip.jp/tdiary/20070908.html#p05](http://yowaken.dip.jp/tdiary/20070908.html#p05) e$B$N7o$N%Q%C%A$G$9!#e(B  
ENCODING\_\*e$B%^%/%m$Oe(BT\_STRINGe$B8BDj$H$$$&$3$H$G$9$h$M!#e(B

# Index: encoding.c

— encoding.c (revision 13443)  
+++ encoding.c (working copy)  
@@ -83,4 +83,5 @@ void  
rb\_enc\_associate\_index(VALUE obj, int idx)  
{

- Check\_Type(obj, T\_STRING);  
if (idx \< ENCODING\_INLINE\_MAX) {  
ENCODING\_SET(obj, idx);  
@@ -118,6 +119,8 @@ int  
rb\_enc\_get\_index(VALUE obj)  
{

- int i = ENCODING\_GET(obj);

- int i;

- Check\_Type(obj, T\_STRING);

- i = ENCODING\_GET(obj);  
if (i == ENCODING\_INLINE\_MAX) {  
VALUE iv;  
Index: string.c  
===================================================================  
— string.c (revision 13443)  
+++ string.c (working copy)  
@@ -1997,4 +1997,5 @@ rb\_str\_subpat\_set(VALUE str, VALUE re, i  
end = RMATCH(match)-\>END(nth);  
len = end - start;

- StringValue(val);  
rb\_enc\_check(str, val);  
rb\_str\_splice\_0(str, start, len, val);

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [September 17, 2007, 1:24pm UTC](https://www.ruby-forum.com/t/string-str-not-string-dumps-core/114675/2 "2007-09-17T13:24:41Z")

</div>

e$B$J$+$@$G$9!#e(B

At Fri, 14 Sep 2007 23:47:26 +0900,  
Nobuyoshi N. wrote in [ruby-dev:31780]:

> [http://yowaken.dip.jp/tdiary/20070908.html#p05](http://yowaken.dip.jp/tdiary/20070908.html#p05) e$B$N7o$N%Q%C%A$G$9!#e(B  
> ENCODING\_\*e$B%^%/%m$Oe(BT\_STRINGe$B8BDj$H$$$&$3$H$G$9$h$M!#e(B

e$B$@$1$@$H$^$:$$$G$9$M!#e(BT\_REGEXPe$B$He(BT\_FILEe$B$b$+$Je(B?

# Index: encoding.c

— encoding.c (revision 13443)  
+++ encoding.c (working copy)  
@@ -80,7 +80,47 @@ rb\_enc\_find(const char \*name)  
}

+static int  
+enc\_capable(VALUE obj)  
+{

- if (IMMEDIATE\_P(obj)) return Qfalse;
- switch (BUILTIN\_TYPE(obj)) {
- 

```
 case T_STRING:

```

- 

```
 case T_REGEXP:

```

- 

```
 case T_FILE:

```

- return Qtrue;
- 

```
 default:

```

- return Qfalse;
- }  
+}
- 

+static void  
+enc\_check\_capable(VALUE x)  
+{

- if (!enc\_capable(x)) {
- const char \*etype;
- 
- if (NIL\_P(x)) {
- 

```
 etype = "nil";

```

- }
- else if (FIXNUM\_P(x)) {
- 

```
 etype = "Fixnum";

```

- }
- else if (SYMBOL\_P(x)) {
- 

```
 etype = "Symbol";

```

- }
- else if (rb\_special\_const\_p(x)) {
- 

```
 etype = RSTRING_PTR(rb_obj_as_string(x));

```

- }
- else {
- 

```
 etype = rb_obj_classname(x);

```

- }
- rb\_raise(rb\_eTypeError, “wrong argument type %s (not encode  
capable)”, etype);
- }  
+}
- 

void  
rb\_enc\_associate\_index(VALUE obj, int idx)  
{

- enc\_check\_capable(obj);  
if (idx \< ENCODING\_INLINE\_MAX) {  
ENCODING\_SET(obj, idx);  
@@ -118,6 +158,8 @@ int  
rb\_enc\_get\_index(VALUE obj)  
{

- int i = ENCODING\_GET(obj);

- int i;

- enc\_check\_capable(obj);

- i = ENCODING\_GET(obj);  
if (i == ENCODING\_INLINE\_MAX) {  
VALUE iv;

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [September 17, 2007, 1:25pm UTC](https://www.ruby-forum.com/t/string-str-not-string-dumps-core/114675/3 "2007-09-17T13:25:25Z")

</div>

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

In message “Re: [ruby-dev:31788] Re: “string”[/str/]=:not\_string dumps  
core”  
on Sat, 15 Sep 2007 15:05:21 +0900, Nobuyoshi N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|At Fri, 14 Sep 2007 23:47:26 +0900,  
|Nobuyoshi N. wrote in [ruby-dev:31780]:  
|\> [http://yowaken.dip.jp/tdiary/20070908.html#p05](http://yowaken.dip.jp/tdiary/20070908.html#p05) e$B$N7o$N%Q%C%A$G$9!#e(B  
|\> ENCODING\_\*e$B%^%/%m$Oe(BT\_STRINGe$B8BDj$H$$$&$3$H$G$9$h$M!#e(B  
|  
|e$B$@$1$@$H$^$:$$$G$9$M!#e(BT\_REGEXPe$B$He(BT\_FILEe$B$b$+$Je(B?

e$BEvLL$O$=$l$G$$$$$+$J$"!#%3%\_%C%H$7$F$/$@$5$$!#e(B
