# $B%a%b%j%j!\<%/5M$a9g$o$;(B

**URL:** <https://www.ruby-forum.com/t/b-a-b-j-j-5m-a9g-o-b/146271>\
**Category:** Development\
**Created:** [August 19, 2008, 5:40pm UTC](https://www.ruby-forum.com/t/b-a-b-j-j-5m-a9g-o-b/146271 "2008-08-19T17:40:07Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![shinichiro.h](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/34f0e0/32.png) [@shinichiro.h](https://www.ruby-forum.com/u/shinichiro.h)\
**Post date:** [August 19, 2008, 5:40pm UTC](https://www.ruby-forum.com/t/b-a-b-j-j-5m-a9g-o-b/146271/1 "2008-08-19T17:40:07Z")

</div>

e$BIMCO$G$9!#e(B

e$B$$$/$D$+%a%b%j%j!\<%/$r8+$D$1$?$N$GJs9p$7$F$\*$-$^$9!#e(B  
e$B=EMW$J$N$Oe(B transcode.c e$B$@$1$+$H;W$$$^$9!#e(B

- test/ruby/test\_transcode.rb

e$BFs2U=j%j!\<%/$7$F$k$+$J$H;W$$$^$9!#e(B  
e$B0l2U=j$Oe(B trans\_open\_i e$B$+$i$+$($C$F$-$?e(B  
entries e$B$r2rJ|$7$F$J$$$b$N$G!"e(B

“\x8f\xbc\x96\x7b\x8d\x73\x8d\x4f”.encode(‘utf-8’, ‘shift\_jis’)

e$B$"$?$j$G:F8=$7$^$9!#e(B

e$B$b$&0l2U=j$Oe(B in\_buf\_start e$B$r2rJ|$7$F$J$$$b$N$G!"e(B

“\xA1\xA1\xFF”.encode(“ISO-2022-JP”, “EUC-JP”, invalid: :replace)

e$B$"$?$j$G:F8=$7$^$7$?!#e(B

- test/strscan/test\_strscan.rb

require ‘strscan’  
ss = StringScanner.new(“\xA1\xA2”.force\_encoding(“euc-jp”))  
t = ss.scan(/./)

e$B$G%j!\<%/$7$^$9!#e(B re.c e$B$r$^$M$7$F=$@5$7$F$\_$^$7$?$,!"e(B  
e$B$3$l$G@5$7$$$+$O$h$/$o$+$C$F$^$;$s!#e(B

- test/openssl/\*

e$B$"$A$3$A$G%j!\<%/$7$F$k$]$$$N$G$9$,!"e(B

e$B$H$j$"$($:\<j7Z$KL$KF~$C$?Fs2U=j$r=$@5$7$F$\*$-$^$7$?!#e(B

e$B$D$$$G$K%X%s$J$b$N$r:n$C$?$N$G\>R2p$5$;$F$/$@$5$$!#e(B  
valgrind e$B$N=PNO$Ke(B Ruby e$B$G$I$N9T$r\<B9T$7$?;~$Ke(B  
e$B3NJ]$7$?%a%b%j$J$N$+$r:.$\<$F=PNO$5$;$k$b$N$r:n$j$^$7$?!#e(B  
e$B$[$I$[$I$K$OF0$$$F$k$\_$?$$$G$9!#e(B

[http://d.hatena.ne.jp/shinichiro\_h/20080817#1218922824](http://d.hatena.ne.jp/shinichiro_h/20080817#1218922824)

# Index: ext/openssl/ossl\_config.c

— ext/openssl/ossl\_config.c (revision 18709)  
+++ ext/openssl/ossl\_config.c (working copy)  
@@ -443,8 +443,10 @@  
eConfigError = rb\_define\_class\_under(mOSSL, “ConfigError”,  
eOSSLError);  
cConfig = rb\_define\_class\_under(mOSSL, “Config”, rb\_cObject);

- const char \*default\_config\_file = CONF\_get1\_default\_config\_file();  
rb\_define\_const(cConfig, “DEFAULT\_CONFIG\_FILE”,

- 

```
   rb_str_new2(CONF_get1_default_config_file()));

```

- 

```
   rb_str_new2(default_config_file));

```

- OPENSSL\_free(default\_config\_file);  
rb\_include\_module(cConfig, rb\_mEnumerable);  
rb\_define\_singleton\_method(cConfig, “parse”, ossl\_config\_s\_parse,  
1);  
rb\_define\_alias(CLASS\_OF(cConfig), “load”, “new”);  
Index: ext/openssl/ossl\_x509ext.c  
===================================================================  
— ext/openssl/ossl\_x509ext.c (revision 18709)  
+++ ext/openssl/ossl\_x509ext.c (working copy)  
@@ -331,6 +331,7 @@  
ASN1\_OCTET\_STRING\_free(asn1s);  
ossl\_raise(eX509ExtError, NULL);  
}
- free(s);  
GetX509Ext(self, ext);  
X509\_EXTENSION\_set\_data(ext, asn1s);

# Index: ext/strscan/strscan.c

— ext/strscan/strscan.c (revision 18709)  
+++ ext/strscan/strscan.c (working copy)  
@@ -407,6 +407,7 @@  
struct strscanner \*p;  
regex\_t \*re;  
int ret;

- int tmpreg;

- tmpreg = re != RREGEXP(regex)-\>ptr;

- if (!tmpreg) RREGEXP(regex)-\>usecnt++;

- if (headonly) {  
ret = onig\_match(re, (UChar\* )CURPTR(p),  
(UChar\* )(CURPTR(p) + S\_RESTLEN(p)),  
@@ -427,6 +431,16 @@  
(UChar\* )CURPTR(p), (UChar\* )(CURPTR(p) +  
S\_RESTLEN(p)),  
&(p-\>regs), ONIG\_OPTION\_NONE);  
}

- if (!tmpreg) RREGEXP(re)-\>usecnt–;

- if (tmpreg) {

- 

```
   if (RREGEXP(regex)->usecnt) {

```

- 

```
       onig_free(re);

```

- 

```
   }

```

- 

```
   else {

```

- 

```
       onig_free(RREGEXP(regex)->ptr);

```

- 

```
       RREGEXP(regex)->ptr = re;

```

- 

```
   }

```

- }

- if (num\_trans \< 0 || !entries)

- if (num\_trans \< 0 || !entries) {

- 

```
   xfree(entries);
   return NULL;

```

- }

- 

```
   if (!e)

```

- 

```
   if (!e) {

```

- 

```
       xfree(entries);
       return NULL;

```

- 

```
   }
   MEMMOVE(entries+1, entries, transcoder_entry_t *, num_trans);
   entries[0] = e;
   num_trans++;

```

@@ -758,12 +762,15 @@

```
 if (flags & ECONV_UNIVERSAL_NEWLINE_DECODER) {
     transcoder_entry_t *e = 

```

get\_transcoder\_entry(“universal\_newline”, “”);

- 

```
   if (!e)

```

- 

```
   if (!e) {

```

- 

```
       xfree(entries);
       return NULL;

```

- 

```
   }
   entries[num_trans++] = e;

```

}

ec = rb\_econv\_open\_by\_transcoder\_entries(num\_trans, entries);

- xfree(entries);  
if (!ec)  
rb\_raise(rb\_eArgError, “encoding conversion not supported (from  
%s to %s)”, from, to);

## @@ -1200,7 +1207,7 @@ if (ec-\>elems[i].out\_buf\_start) xfree(ec-\>elems[i].out\_buf\_start); }

- xfree(ec-\>in\_buf\_start);  
xfree(ec-\>elems);  
xfree(ec);  
}

---

<div class="post-metadata">

**Author:** ![shinichiro.h](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/34f0e0/32.png) [@shinichiro.h](https://www.ruby-forum.com/u/shinichiro.h)\
**Post date:** [August 19, 2008, 7:33pm UTC](https://www.ruby-forum.com/t/b-a-b-j-j-5m-a9g-o-b/146271/2 "2008-08-19T19:33:31Z")

</div>

In article [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
shinichiro.h [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> e$B$$$/$D$+%a%b%j%j!\<%/$r8+$D$1$?$N$GJs9p$7$F$\*$-$^$9!#e(B  
> e$B=EMW$J$N$Oe(B transcode.c e$B$@$1$+$H;W$$$^$9!#e(B
> 
> - test/ruby/test\_transcode.rb
> 
> e$BFs2U=j%j!\<%/$7$F$k$+$J$H;W$$$^$9!#e(B

e$B$?$7$+$K!#$"$F$F$F$\*$-$^$7$?!#e(B
