[#24698] NKF(nkf2)を1.8ブランチに入れました — "NARUSE, Yui" <naruse@...>

naruseです。

14 messages 2004/11/03
[#24734] Re: NKF(nkf2)を1.8ブランチに入れました — 堀川 久 <vzw00011@...> 2004/11/06

こんにちは。

[#24720] メール関係ライブラリの標準添付について — MoonWolf <moonwolf@...>

MoonWolfです。

17 messages 2004/11/05
[#24721] Re: メール関係ライブラリの標準添付について — Yukihiro Matsumoto <matz@...> 2004/11/05

まつもと ゆきひろです

[#24722] Re: メール関係ライブラリの標準添付について — MoonWolf <moonwolf@...> 2004/11/05

MoonWolfです。

[#24804] Re: まつもとさんの負担を減らすために、何ができるだろう — "URABE Shyouhei aka.mput" <root@...>

mput です。 ruby-dev に移動します。

21 messages 2004/11/13
[#24805] Re: まつもとさんの負担を減らすために、何ができるだろう — Tanaka Akira <akr@...17n.org> 2004/11/13

In article <2D6284E3-351D-11D9-B7EF-000393735AAE@mput.dip.jp>,

[#24806] Re: まつもとさんの負担を減らすために、何ができるだろう — "URABE Shyouhei aka.mput" <root@...> 2004/11/13

mput です。

[#24808] Re: まつもとさんの負担を減らすために、何ができるだろう — Masayoshi Takahashi <maki@...> 2004/11/13

高橋征義です。

[#24809] Re: まつもとさんの負担を減らすために、何ができるだろう — "URABE Shyouhei aka.mput" <root@...> 2004/11/13

mput です。

[#24834] Process.getrlimit and Process.setrlimit — Tanaka Akira <akr@...17n.org>

Process.getrlimit と Process.setrlimit が欲しいので実装してみました。

25 messages 2004/11/13

[#24965] sync and stdio buffering — Tanaka Akira <akr@...17n.org>

ちょっとした思いつきなのですが、

12 messages 2004/11/26

[#24993] rb_io_sysread dumps core [BUG] rb_sys_fail() - errno == 0 — Tietew <tietew-ml-ruby-dev@...>

ソケットとスレッドを大量に使うアプリ(具体的には IRCbot です)を

13 messages 2004/11/29

[#25003] IO#flush dumps core again — Tanaka Akira <akr@...17n.org>

次のようにすると core を吐きます。

28 messages 2004/11/30
[#25004] Re: IO#flush dumps core again — nobu@... 2004/11/30

なかだです。

[#25005] Re: IO#flush dumps core again — Yukihiro Matsumoto <matz@...> 2004/11/30

まつもと ゆきひろです

[#25009] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/01

In article <1101836040.635395.27476.nullmailer@x31.priv.netlab.jp>,

[#25014] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/01

In article <1101878558.979715.1359.nullmailer@x31.priv.netlab.jp>,

[#25015] Re: IO#flush dumps core again — Yukihiro Matsumoto <matz@...> 2004/12/01

まつもと ゆきひろです

[#25056] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/05

In article <1101888165.570792.4192.nullmailer@x31.priv.netlab.jp>,

[#25074] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/06

In article <1102293033.356112.2288.nullmailer@x31.priv.netlab.jp>,

[ruby-dev:24927] Re: [Oniguruma] patch for 3.4.0

From: "K.Kosako" <kosako@...>
Date: 2004-11-19 12:35:43 UTC
List: ruby-dev #24927
Yukihiro Matsumotoさんの<1100861411.793754.1847.nullmailer@x31.priv.netlab.jp>から
> まつもと ゆきひろです
> 
> In message "Re: [ruby-dev:24924] [Oniguruma] patch for 3.4.0"
>     on Fri, 19 Nov 2004 19:45:57 +0900, "K.Kosako" <kosako@sofnec.co.jp> writes:
> 
> |3.4.0のimport後、今日までに発見された
> |バグの修正を、一つのパッチに纏めました。
> 
> ふたつめ以降のパッチがold diffになってます。diff -uで取り直
> していただけませんか。

了解しました。
--
小迫@ソフネック   渋谷区恵比寿1-15-1

--- test_regexp.rb	2004-10-30 08:22:57.000000000 +0900
+++ /home/kosako/oniguruma/test_regexp.rb	2004-11-19 17:36:57.000000000 +0900
@@ -8,4 +8,20 @@ class TestRegexp < Test::Unit::TestCase
   def test_ruby_talk_116455
     assert_match(/^(\w{2,}).* ([A-Za-z\xa2\xc0-\xff]{2,}?)$/, "Hallo Welt")
   end
+
+  def test_ruby_dev_24887
+    assert_equal("a".gsub(/a\Z/, ""), "")
+  end
+
+  def test_yoshidam_net_20041111_1
+    s = "[\xC2\xA0-\xC3\xBE]"
+    assert_match(Regexp.new(s, nil, "u"), "\xC3\xBE")
+  end
+
+  def test_yoshidam_net_20041111_2
+    assert_raise(RegexpError) do
+      s = "[\xFF-\xFF]"
+      Regexp.new(s, nil, "u")
+    end
+  end
 end


Index: regcomp.c
===================================================================
RCS file: /home/kosako/cvsrep/oniguruma/regcomp.c,v
retrieving revision 1.6
diff -u -p -r1.6 regcomp.c
--- regcomp.c	18 Oct 2004 11:44:53 -0000	1.6
+++ regcomp.c	19 Nov 2004 11:40:23 -0000
@@ -158,13 +158,7 @@ add_rel_addr(regex_t* reg, int addr)
 {
   RelAddrType ra = (RelAddrType )addr;
 
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
   BBUF_ADD(reg, &ra, SIZE_RELADDR);
-#else
-  UChar buf[SERIALIZE_BUFSIZE];
-  SERIALIZE_RELADDR(ra, buf);
-  BBUF_ADD(reg, buf, SIZE_RELADDR);
-#endif
   return 0;
 }
 
@@ -173,13 +167,7 @@ add_abs_addr(regex_t* reg, int addr)
 {
   AbsAddrType ra = (AbsAddrType )addr;
 
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
   BBUF_ADD(reg, &ra, SIZE_ABSADDR);
-#else
-  UChar buf[SERIALIZE_BUFSIZE];
-  SERIALIZE_ABSADDR(ra, buf);
-  BBUF_ADD(reg, buf, SIZE_ABSADDR);
-#endif
   return 0;
 }
 
@@ -188,13 +176,7 @@ add_length(regex_t* reg, int len)
 {
   LengthType l = (LengthType )len;
 
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
   BBUF_ADD(reg, &l, SIZE_LENGTH);
-#else
-  UChar buf[SERIALIZE_BUFSIZE];
-  SERIALIZE_LENGTH(l, buf);
-  BBUF_ADD(reg, buf, SIZE_LENGTH);
-#endif
   return 0;
 }
 
@@ -203,13 +185,7 @@ add_mem_num(regex_t* reg, int num)
 {
   MemNumType n = (MemNumType )num;
 
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
   BBUF_ADD(reg, &n, SIZE_MEMNUM);
-#else
-  UChar buf[SERIALIZE_BUFSIZE];
-  SERIALIZE_MEMNUM(n, buf);
-  BBUF_ADD(reg, buf, SIZE_MEMNUM);
-#endif
   return 0;
 }
 
@@ -219,13 +195,7 @@ add_repeat_num(regex_t* reg, int num)
 {
   RepeatNumType n = (RepeatNumType )num;
 
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
   BBUF_ADD(reg, &n, SIZE_REPEATNUM);
-#else
-  UChar buf[SERIALIZE_BUFSIZE];
-  SERIALIZE_REPEATNUM(n, buf);
-  BBUF_ADD(reg, buf, SIZE_REPEATNUM);
-#endif
   return 0;
 }
 #endif
@@ -233,13 +203,7 @@ add_repeat_num(regex_t* reg, int num)
 static int
 add_option(regex_t* reg, OnigOptionType option)
 {
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
   BBUF_ADD(reg, &option, SIZE_OPTION);
-#else
-  UChar buf[SERIALIZE_BUFSIZE];
-  SERIALIZE_OPTION(option, buf);
-  BBUF_ADD(reg, buf, SIZE_OPTION);
-#endif
   return 0;
 }
 
@@ -1637,9 +1601,6 @@ unset_addr_list_fix(UnsetAddrList* uslis
   int i, offset;
   EffectNode* en;
   AbsAddrType addr;
-#ifndef PLATFORM_UNALIGNED_WORD_ACCESS
-  UChar buf[SERIALIZE_BUFSIZE];
-#endif
 
   for (i = 0; i < uslist->num; i++) {
     en = &(NEFFECT(uslist->us[i].target));
@@ -1647,12 +1608,7 @@ unset_addr_list_fix(UnsetAddrList* uslis
     addr = en->call_addr;
     offset = uslist->us[i].offset;
 
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
     BBUF_WRITE(reg, offset, &addr, SIZE_ABSADDR);
-#else
-    SERIALIZE_ABSADDR(addr, buf);
-    BBUF_WRITE(reg, offset, buf, SIZE_ABSADDR);
-#endif
   }
   return 0;
 }
@@ -5125,8 +5081,7 @@ onig_print_compiled_byte_code(FILE* f, U
     case ARG_NON:
       break;
     case ARG_RELADDR:
-      addr = *((RelAddrType* )bp);
-      bp += SIZE_RELADDR;
+      GET_RELADDR_INC(addr, bp);
       fprintf(f, ":(%d)", addr);
       break;
     case ARG_ABSADDR:
Index: regexec.c
===================================================================
RCS file: /home/kosako/cvsrep/oniguruma/regexec.c,v
retrieving revision 1.9
diff -u -p -r1.9 regexec.c
--- regexec.c	30 Oct 2004 03:31:58 -0000	1.9
+++ regexec.c	19 Nov 2004 11:40:23 -0000
@@ -3199,7 +3199,7 @@ onig_search(regex_t* reg, UChar* str, UC
       }
     }
     else if (reg->anchor & ANCHOR_SEMI_END_BUF) {
-      UChar* pre_end = ONIGENC_STEP_BACK(reg->enc, start, end, 1);
+      UChar* pre_end = ONIGENC_STEP_BACK(reg->enc, str, end, 1);
 
       if (ONIGENC_IS_MBC_NEWLINE(reg->enc, pre_end, end)) {
 	semi_end = pre_end;
Index: regint.h
===================================================================
RCS file: /home/kosako/cvsrep/oniguruma/regint.h,v
retrieving revision 1.6
diff -u -p -r1.6 regint.h
--- regint.h	30 Oct 2004 03:31:58 -0000	1.6
+++ regint.h	19 Nov 2004 11:40:23 -0000
@@ -580,57 +580,31 @@ typedef short int MemNumType;
 #define SIZE_OPTION        sizeof(OnigOptionType)
 #define SIZE_CODE_POINT    sizeof(OnigCodePoint)
 
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
-#define GET_RELADDR_INC(addr,p) do{\
-  addr = *((RelAddrType* )(p));\
-  (p) += SIZE_RELADDR;\
-} while(0)
-
-#define GET_ABSADDR_INC(addr,p) do{\
-  addr = *((AbsAddrType* )(p));\
-  (p) += SIZE_ABSADDR;\
-} while(0)
-
-#define GET_LENGTH_INC(len,p) do{\
-  len = *((LengthType* )(p));\
-  (p) += SIZE_LENGTH;\
-} while(0)
 
-#define GET_MEMNUM_INC(num,p) do{\
-  num = *((MemNumType* )(p));\
-  (p) += SIZE_MEMNUM;\
-} while(0)
 
-#define GET_REPEATNUM_INC(num,p) do{\
-  num = *((RepeatNumType* )(p));\
-  (p) += SIZE_REPEATNUM;\
-} while(0)
+#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
 
-#define GET_OPTION_INC(option,p) do{\
-  option = *((OnigOptionType* )(p));\
-  (p) += SIZE_OPTION;\
+#define PLATFORM_GET_INC(val,p,type) do{\
+  val  = *(type* )p;\
+  (p) += sizeof(type);\
 } while(0)
 
 #else
 
-#define GET_RELADDR_INC(addr,p)      GET_SHORT_INC(addr,p)
-#define GET_ABSADDR_INC(addr,p)      GET_SHORT_INC(addr,p)
-#define GET_LENGTH_INC(len,p)        GET_SHORT_INC(len,p)
-#define GET_MEMNUM_INC(num,p)        GET_SHORT_INC(num,p)
-#define GET_REPEATNUM_INC(num,p)     GET_INT_INC(num,p)
-#define GET_OPTION_INC(option,p)     GET_UINT_INC(option,p)
-
-#define SERIALIZE_RELADDR(addr,p)    SERIALIZE_SHORT(addr,p)
-#define SERIALIZE_ABSADDR(addr,p)    SERIALIZE_SHORT(addr,p)
-#define SERIALIZE_LENGTH(len,p)      SERIALIZE_SHORT(len,p)
-#define SERIALIZE_MEMNUM(num,p)      SERIALIZE_SHORT(num,p)
-#define SERIALIZE_REPEATNUM(num,p)   SERIALIZE_INT(num,p)
-#define SERIALIZE_OPTION(option,p)   SERIALIZE_UINT(option,p)
-
-#define SERIALIZE_BUFSIZE            SIZEOF_INT
+#define PLATFORM_GET_INC(val,p,type) do{\
+  xmemcpy(&val, (p), sizeof(type));\
+  (p) += sizeof(type);\
+} while(0)
 
 #endif  /* PLATFORM_UNALIGNED_WORD_ACCESS */
 
+#define GET_RELADDR_INC(addr,p)    PLATFORM_GET_INC(addr,   p, RelAddrType)
+#define GET_ABSADDR_INC(addr,p)    PLATFORM_GET_INC(addr,   p, AbsAddrType)
+#define GET_LENGTH_INC(len,p)      PLATFORM_GET_INC(len,    p, LengthType)
+#define GET_MEMNUM_INC(num,p)      PLATFORM_GET_INC(num,    p, MemNumType)
+#define GET_REPEATNUM_INC(num,p)   PLATFORM_GET_INC(num,    p, RepeatNumType)
+#define GET_OPTION_INC(option,p)   PLATFORM_GET_INC(option, p, OnigOptionType)
+
 /* code point's address must be aligned address. */
 #define GET_CODE_POINT(code,p)   code = *((OnigCodePoint* )(p))
 #define GET_BYTE_INC(byte,p) do{\
Index: regparse.c
===================================================================
RCS file: /home/kosako/cvsrep/oniguruma/regparse.c,v
retrieving revision 1.6
diff -u -p -r1.6 regparse.c
--- regparse.c	30 Oct 2004 04:21:32 -0000	1.6
+++ regparse.c	19 Nov 2004 11:40:23 -0000
@@ -3631,6 +3631,9 @@ next_state_val(CClassNode* cc, OnigCodeP
   case CCS_RANGE:
     if (intype == *type) {
       if (intype == CCV_SB) {
+        if (*vs > 0xff || v > 0xff)
+          return ONIGERR_INVALID_WIDE_CHAR_VALUE;
+
 	if (*vs > v) {
 	  if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC))
 	    goto ccs_range_end;
@@ -3646,14 +3649,8 @@ next_state_val(CClassNode* cc, OnigCodeP
     }
     else {
 #if 0
-      if (intype == CCV_CODE_POINT && *type == CCV_SB &&
-	  ONIGENC_IS_CONTINUOUS_SB_MB(env->enc)) {
-	bitset_set_range(cc->bs, (int )*vs, 0x7f);
-	r = add_code_range(&(cc->mbuf), env, (OnigCodePoint )0x80, v);
-	if (r < 0) return r;
-      }
-#else
       if (intype == CCV_CODE_POINT && *type == CCV_SB) {
+#endif
 	if (*vs > v) {
 	  if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC))
 	    goto ccs_range_end;
@@ -3663,10 +3660,11 @@ next_state_val(CClassNode* cc, OnigCodeP
 	bitset_set_range(cc->bs, (int )*vs, (int )(v < 0xff ? v : 0xff));
 	r = add_code_range(&(cc->mbuf), env, (OnigCodePoint )*vs, v);
 	if (r < 0) return r;
+#if 0
       }
-#endif
       else
 	return ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE;
+#endif
     }
   ccs_range_end:
     *state = CCS_COMPLETE;
@@ -3826,7 +3824,7 @@ parse_char_class(Node** np, OnigToken* t
       break;
 
     case TK_CODE_POINT:
-      v = tok->u.code;
+      v = (OnigCodePoint )tok->u.code;
       in_israw = 1;
     val_entry:
       len = ONIGENC_CODE_TO_MBCLEN(env->enc, v);
@@ -3952,7 +3950,7 @@ parse_char_class(Node** np, OnigToken* t
     case TK_CC_AND: /* && */
       {
 	if (state == CCS_VALUE) {
-	  r = next_state_val(cc, &vs, 0, &val_israw, 0, CCV_SB,
+	  r = next_state_val(cc, &vs, 0, &val_israw, 0, val_type,
 			     &val_type, &state, env);
 	  if (r != 0) goto err;
 	}
@@ -3992,7 +3990,7 @@ parse_char_class(Node** np, OnigToken* t
   }
 
   if (state == CCS_VALUE) {
-    r = next_state_val(cc, &vs, 0, &val_israw, 0, CCV_SB,
+    r = next_state_val(cc, &vs, 0, &val_israw, 0, val_type,
 		       &val_type, &state, env);
     if (r != 0) goto err;
   }

In This Thread