[#25636] [Oniguruma 3.X] reggnu.c — "K.Kosako" <sndgk393@...>

さっき気がついたのですが、元々は

15 messages 2005/02/05

[#25655] openssl binding for SSL_CTX_set_default_verify_paths and X509_STORE_set_default_paths — Tanaka Akira <akr@...17n.org>

open-uri で https を扱うことを考えていろいろと調べていた所、openssl で、

9 messages 2005/02/08
[#25670] Re: openssl binding for SSL_CTX_set_default_verify_paths and X509_STORE_set_default_paths — GOTOU Yuuzou <gotoyuzo@...> 2005/02/10

In message <876513vce0.fsf@serein.a02.aist.go.jp>,

[#25713] pthread trouble on sighandler — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

17 messages 2005/02/18
[#25714] Re: pthread trouble on sighandler — Yukihiro Matsumoto <matz@...> 2005/02/18

まつもと ゆきひろです

[#25755] I/O operation differs signal handler — Minero Aoki <aamine@...>

青木です。

14 messages 2005/02/24
[#25756] Re: I/O operation differs signal handler — Tanaka Akira <akr@...17n.org> 2005/02/24

In article <20050224091450P.aamine@loveruby.net>,

[ruby-dev:25705] Re: [Oniguruma 3.X] reggnu.c

From: "K.Kosako" <sndgk393@...>
Date: 2005-02-16 13:53:34 UTC
List: ruby-dev #25705
Kazuo Saito wrote:
> 遅くなりましたが、作成してみました。動作は make test && make test-all、
> ruby -w -Ke test.rb で確認しました。
> 見よう見まねな部分もあるので、内容を確認して頂けると助かります。
> 大丈夫なようであればコミットします。
> 
>     * gc.c, re.c: now ruby calls Oniguruma API directly, bypassing
>       GNU compatible APIs.

これは私が最初にre.cを変更したときに
不完全なまま放置していたのが原因なのですが、
make_regexp()の中でonig_alloc_init()にflagsを
渡す必要があることに気づきました。

re_alloc_pattern()の使用を止めると、
reggnu.c全体が不要になると思います。

拡張ライブラリの中でGNU APIを利用している
可能性がないとは言えませんが、開発版なので
なくしても良いのではないでしょうか?
--
小迫

--- re.c.x	2005-02-16 22:02:55.000000000 +0900
+++ re.c	2005-02-16 22:35:44.577182400 +0900
@@ -485,7 +485,10 @@ rb_reg_to_s(re)
 	    int r;
 	    Regexp *rp;
 	    kcode_set_option(re);
-	    r = re_alloc_pattern(&rp);
+            r = onig_alloc_init(&rp, ONIG_OPTION_DEFAULT,
+                                ONIGENC_AMBIGUOUS_MATCH_DEFAULT,
+                                onigenc_get_default_encoding(),
+                                OnigDefaultSyntax);
 	    if (r == 0) {
 		 ++ptr;
  		 len -= 2;
@@ -637,15 +640,15 @@ make_regexp(s, len, flags, ce)
        from that.
     */

-    r = re_alloc_pattern(&rp);
+    r = onig_alloc_init(&rp, flags,
+                        ONIGENC_AMBIGUOUS_MATCH_DEFAULT,
+                        onigenc_get_default_encoding(),
+                        OnigDefaultSyntax);
     if (r) {
 	onig_error_code_to_str((UChar* )err, r);
 	rb_reg_raise(s, len, err, 0, ce);
     }

-    if (flags) {
-	rp->options = flags;
-    }
     r = onig_compile(rp, (UChar* )s, (UChar* )(s + len), &einfo);

     if (r != 0) {

In This Thread