[ruby-dev:31785] Re: `scan': character encodings differ (ArgumentError)

From: Kouhei Sutou <kou@...>
Date: 2007-09-15 03:24:37 UTC
List: ruby-dev #31785
須藤です。

In <20070915.120322.-1619798038.kou@cozmixng.org>
  "[ruby-dev:31784] Re: `scan': character encodings differ (ArgumentError)" on Sat, 15 Sep 2007 12:03:38 +0900,
  Kouhei Sutou <kou@cozmixng.org> wrote:

> これは、異なるエンコーディングのStringとRegexpができるか、だ
> と思いました。思ったのですが、できますね。
> 
> というか、string.c:scan_once()ではrb_enc_check()ではなくて、
> rb_enc_get(str)で十分な気がします。

subとかも同じ理由で動かなかったです。
とりあえず、手元ではこんな風にしてREXMLを動かしてRSS Parser
のテストをすることにします。


Index: string.c
===================================================================
--- string.c    (リビジョン 13445)
+++ string.c    (作業コピー)
@@ -4448,7 +4448,7 @@
     struct re_registers *regs;
     long i;
 
-    enc = rb_enc_check(str, pat);
+    enc = rb_enc_get(str);
     if (rb_reg_search(pat, str, *start, 0) >= 0) {
        match = rb_backref_get();
        regs = RMATCH(match)->regs;
Index: re.c
===================================================================
--- re.c        (リビジョン 13445)
+++ re.c        (作業コピー)
@@ -2173,7 +2173,6 @@
     int no;
     rb_encoding *enc = rb_enc_check(str, src);
 
-    rb_enc_check(str, regexp);
     p = s = RSTRING_PTR(str);
     e = s + RSTRING_LEN(str);
 

In This Thread

Prev Next