[#21225] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

14 messages 2003/08/22
[#21227] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — nobu.nakada@... 2003/08/22

なかだです。

[#21228] Re: [ruby-cvs] ruby: * enum.c (inject_i): use rb_yield_values. — matz@... (Yukihiro Matsumoto) 2003/08/22

まつもと ゆきひろです

[#21281] 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...>

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

16 messages 2003/08/29
[#21285] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/08/29

まつもと ゆきひろです

[#21288] Re: 大量メモリ消費攻撃に対する対応 — Hidetoshi NAGAI <nagai@...> 2003/08/29

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

[#21306] Re: 大量メモリ消費攻撃に対する対応 — matz@... (Yukihiro Matsumoto) 2003/09/03

まつもと ゆきひろです

[ruby-dev:21204] [ONIGURUMA] utf-8 character class

From: nobu.nakada@...
Date: 2003-08-15 07:08:44 UTC
List: ruby-dev #21204
なかだです。

Onigurumaで、UTF-8の文字クラスのマッチがうまく行っていないよう
です。

$ ruby -e 'n = [0xf1].pack("U"); p /[#{n}]/e =~ n'
0
$ ruby -e 'n = [0xf1].pack("U"); p /[#{n}]/u =~ n'
0

$ onigruby -e 'n = [0xf1].pack("U"); p /[#{n}]/u =~ n'
nil
$ onigruby -e 'n = [0xf1].pack("U"); p /[#{n}]/e =~ n'
0

それと、以下の修正も。

* SJISで0x80をマルチバイトの先頭とみなしてしまう
* WindowsでIMPORTが定義されなくなった
* 別ディレクトリでコンパイルしたときにテストできない
* テスト結果をstdoutに出力


Index: Makefile.in
===================================================================
RCS file: /cvs/ruby/src/oniguruma/Makefile.in,v
retrieving revision 1.1.1.15
diff -u -2 -p -r1.1.1.15 Makefile.in
--- Makefile.in	9 Aug 2003 14:09:04 -0000	1.1.1.15
+++ Makefile.in	15 Aug 2003 05:39:50 -0000
@@ -111,8 +111,8 @@ ptest: $(testp)
 
 $(testc): $(testc).c $(libname)
-	$(CC) $(CFLAGS) -o $@ $(testc).c $(libname)
+	$(CC) $(CFLAGS) -o $@ $(srcdir)/$(testc).c $(libname)
 
 $(testp): $(testc).c $(libname)
-	$(CC) -DPOSIX_TEST $(CFLAGS) -o $@ $(testc).c $(libname)
+	$(CC) -DPOSIX_TEST $(CFLAGS) -o $@ $(srcdir)/$(testc).c $(libname)
 
 $(testc).c: test.rb testconv.rb
@@ -120,5 +120,5 @@ $(testc).c: test.rb testconv.rb
 
 $(WIN32)/$(testc).c: test.rb testconv.rb
-	ruby -Ke testconv.rb -win < test.rb | nkf -cs > $@
+	ruby -Ke testconv.rb -win < $(srcdir)/test.rb | nkf -cs > $@
 
 clean:
Index: oniguruma.h
===================================================================
RCS file: /cvs/ruby/src/oniguruma/oniguruma.h,v
retrieving revision 1.1.1.3
diff -u -2 -p -r1.1.1.3 oniguruma.h
--- oniguruma.h	9 Aug 2003 14:09:05 -0000	1.1.1.3
+++ oniguruma.h	15 Aug 2003 05:39:50 -0000
@@ -45,5 +45,5 @@
 #if defined(EXPORT) || defined(RUBY_EXPORT)
 #define REG_EXTERN   extern __declspec(dllexport)
-#elif defined(IMPORT)
+#else
 #define REG_EXTERN   extern __declspec(dllimport)
 #endif
Index: reggnu.c
===================================================================
RCS file: /cvs/ruby/src/oniguruma/reggnu.c,v
retrieving revision 1.1.1.7
diff -u -2 -p -r1.1.1.7 reggnu.c
--- reggnu.c	19 Mar 2003 12:56:27 -0000	1.1.1.7
+++ reggnu.c	9 Jul 2003 14:54:06 -0000
@@ -168,5 +168,5 @@ static const unsigned char mbctab_sjis[]
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Index: regparse.c
===================================================================
RCS file: /cvs/ruby/src/oniguruma/regparse.c,v
retrieving revision 1.1.1.6
diff -u -2 -p -r1.1.1.6 regparse.c
--- regparse.c	9 Aug 2003 14:09:05 -0000	1.1.1.6
+++ regparse.c	15 Aug 2003 07:02:47 -0000
@@ -3542,5 +3542,8 @@ parse_char_class(Node** np, RegToken* to
       in_israw = 1;
     val_entry:
-      in_type = (v < SINGLE_BYTE_SIZE ? CCV_SB : CCV_WC);
+      if (v < (env->enc == REGCODE_UTF8 ? 0xc0 : SINGLE_BYTE_SIZE))
+	in_type = CCV_SB;
+      else
+	in_type = CCV_WC;
       r = next_state_val(cc, &vs, v, &val_israw, in_israw, in_type, &val_type,
 			 &state, env);
Index: testc.c
===================================================================
RCS file: /cvs/ruby/src/oniguruma/testc.c,v
retrieving revision 1.1.1.13
diff -u -2 -p -r1.1.1.13 testc.c
--- testc.c	9 Aug 2003 14:09:06 -0000	1.1.1.13
+++ testc.c	15 Aug 2003 05:39:51 -0000
@@ -29,5 +29,5 @@ static void xx(char* pattern, char* str,
   if (r) {
     regerror(r, &reg, buf, sizeof(buf));
-    fprintf(stderr, "ERROR: %s\n", buf);
+    fprintf(stdout, "ERROR: %s\n", buf);
     exit(-1);
   }
@@ -36,5 +36,5 @@ static void xx(char* pattern, char* str,
   if (r != 0 && r != REG_NOMATCH) {
     regerror(r, &reg, buf, sizeof(buf));
-    fprintf(stderr, "ERROR: %s\n", buf);
+    fprintf(stdout, "ERROR: %s\n", buf);
     exit(-1);
   }
@@ -74,9 +74,9 @@ static void xx(char* pattern, char* str,
 
   r = regex_new(&reg, (UChar* )pattern, (UChar* )(pattern + strlen(pattern)),
-		REG_OPTION_DEFAULT, REGCODE_EUCJP, REG_SYNTAX_DEFAULT, &einfo);
+		RE_OPTION_MULTILINE, REGCODE_EUCJP, REG_SYNTAX_DEFAULT, &einfo);
   if (r) {
     char s[REG_MAX_ERROR_MESSAGE_LEN];
     regex_error_code_to_str(s, r, &einfo);
-    fprintf(stderr, "ERROR: %s\n", s);
+    fprintf(stdout, "ERROR: %s\n", s);
     exit(-1);
   }
@@ -88,5 +88,5 @@ static void xx(char* pattern, char* str,
     char s[REG_MAX_ERROR_MESSAGE_LEN];
     regex_error_code_to_str(s, r);
-    fprintf(stderr, "ERROR: %s\n", s);
+    fprintf(stdout, "ERROR: %s\n", s);
     exit(-1);
   }
@@ -271,4 +271,5 @@ extern int main(int argc, char* argv[])
   x2("(?i:a)", "A", 0, 1);
   x2("(?i:A)", "a", 0, 1);
+  x2("(?i:\\?A)", "?a", 0, 2);
   n("(?i:A)", "b");
   x2("(?i:[A-Z])", "a", 0, 1);


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next