[#10661] bmingw package — WATANABE Hirofumi <eban@...>

わたなべです.

49 messages 2000/08/21
[#10664] Re: bmingw package — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/08/21

なかだです。

[#10665] Re: bmingw package — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/08/21

なかだです。

[#10667] Re: bmingw package — WATANABE Hirofumi <eban@...> 2000/08/21

わたなべです.

[#10668] Re: bmingw package — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/08/22

なかだです。

[#10670] Re: bmingw package — WATANABE Hirofumi <eban@...> 2000/08/22

わたなべです.

[#10671] Re: bmingw package — nobu.nakada@... 2000/08/22

なかだです。

[#10673] Re: bmingw package — WATANABE Hirofumi <eban@...> 2000/08/23

わたなべです.

[#10675] Re: bmingw package — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/08/23

なかだです。

[#10693] Re: bmingw package — WATANABE Hirofumi <eban@...> 2000/08/28

わたなべです.

[#10707] Re: bmingw package — nobu.nakada@... 2000/08/28

なかだです。

[#10713] Re: bmingw package — WATANABE Hirofumi <eban@...> 2000/08/29

わたなべです.

[#10717] Re: bmingw package — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/08/29

なかだです。

[#10723] Re: bmingw package — WATANABE Hirofumi <eban@...> 2000/08/30

わたなべです.

[#10797] Re: bmingw package — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/09/01

なかだです。

[#10821] Re: bmingw package — WATANABE Hirofumi <eban@...> 2000/09/04

わたなべです.

[#10824] Re: bmingw package — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/09/04

なかだです。

[#10825] Re: bmingw package — WATANABE Hirofumi <eban@...> 2000/09/04

わたなべです.

[#10827] Re: bmingw package — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/09/04

なかだです。

[#10837] Re: bmingw package — WATANABE Hirofumi <eban@...> 2000/09/05

わたなべです.

[#10677] Class Variable — Shin-ichiro Hara <sinara@...>

原です。

16 messages 2000/08/24
[#10681] Re: Class Variable — matz@... (Yukihiro Matsumoto) 2000/08/25

まつもと ゆきひろです

[#10688] ruby-1.6.0-20000824.i586-mswin32 bug — Kazuhiro NISHIYAMA <zn@...>

http://www.geocities.co.jp/SiliconValley-Bay/4076/

34 messages 2000/08/27
[#10692] Re: ruby-1.6.0-20000824.i586-mswin32 bug — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/08/28

なかだです。

[#10705] Re: ruby-1.6.0-20000824.i586-mswin32 bug — Kazuhiro NISHIYAMA <zn@...> 2000/08/28

"Nobuyoshi.Nakada" <nobu.nakada@nifty.ne.jp> wrote:

[#10711] Re: ruby-1.6.0-20000824.i586-mswin32 bug — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/08/29

なかだです。

[#10720] Re: ruby-1.6.0-20000824.i586-mswin32 bug — Katsuyuki Komatsu <komatsu@...> 2000/08/30

小松です.

[#10725] Re: ruby-1.6.0-20000824.i586-mswin32 bug — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/08/30

なかだです。

[#10805] ruby-1.6.0-20000901.i586-mswin32.lzh — Kazuhiro NISHIYAMA <zn@...> 2000/09/02

20000901のでもirbでCtrl+Cを押したら落ちました。

[#10807] Re: ruby-1.6.0-20000901.i586-mswin32.lzh — matz@... (Yukihiro Matsumoto) 2000/09/02

まつもと ゆきひろです

[#10811] Re: Ctrl+C on win32 console <- Re: ruby-1.6.0-20000901.i586-mswin32.lzh — " たけ (tk)" <ggb03124@...> 2000/09/03

たけ(tk)です。

[#10813] Re: Ctrl+C on win32 console <- Re: ruby-1.6.0-20000901.i586-mswin32.lzh — nobu.nakada@... 2000/09/03

なかだです。

[#10729] Fwd: patch of the ruby-1.4.6 for NT4.0&VC4.0 on DEC Alpha. — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

18 messages 2000/08/30
[#10730] Re: Fwd: patch of the ruby-1.4.6 for NT4.0&VC4.0 on DEC Alpha. — WATANABE Hirofumi <eban@...> 2000/08/30

わたなべです.

[#10762] ruby 1.6.0 preview — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

42 messages 2000/08/31

[ruby-dev:10689] Re: a regex bug?

From: matz@... (Yukihiro Matsumoto)
Date: 2000-08-27 15:13:40 UTC
List: ruby-dev #10689
まつもと ゆきひろです

In message "[ruby-dev:10683] Re: a regex bug?"
    on 00/08/26, Tanaka Akira <akr@m17n.org> writes:

|ちなみに、(まだ未公開の) Emacs21 にも同様な問題があって、半田さんを通
|して問題を伝えたのですが、Stefan Monnier がさくっと直してしまったよう
|です。

そのパッチを半田さんから送って頂きました。で、それをヒントに
したものが添付のパッチです。

なんとなく動いているようです。しかし、これをさくっと直せるっ
てのは凄いなあ。

--- regex.c	2000/08/25 08:26:03	1.28
+++ regex.c	2000/08/26 16:56:23
@@ -151,2 +151,18 @@
 
+#define ENSURE_FAIL_STACK(n)						\
+  do {									\
+    if (stacke - stackp <= (n)) {					\
+	unsigned char **stackx;						\
+	unsigned int len = stacke - stackb;				\
+	/* if (len > re_max_failures * MAX_NUM_FAILURE_ITEMS)		\
+	   {								\
+	   FREE_VARIABLES();						\
+	   FREE_AND_RETURN(stackb,(-2));				\
+	   }*/								\
+									\
+        /* Roughly double the size of the stack.  */			\
+        EXPAND_FAIL_STACK(stackx, stackb, len);				\
+      }									\
+  } while (0)
+
 /* Get the interface, including the syntax bits.  */
@@ -2071,3 +2087,3 @@
 	  store_jump_n(b, greedy?jump_n:finalize_push_n, laststart + 5,
-		       upper_bound/* - 1*/);
+		       upper_bound - 1);
 	  b += 5;
@@ -2089,3 +2105,3 @@
 	  insert_op_2(set_number_at, laststart, b, b - laststart,
-		      upper_bound/* - 1*/);
+		      upper_bound - 1);
 	  b += 5;
@@ -3331,2 +3347,5 @@
 
+/* I.e., ptr and count.  */
+#define NUM_COUNT_ITEMS 2
+
 /* Individual items aside from the registers.  */
@@ -3340,5 +3359,22 @@
 /* We push this many things on the stack whenever we fail.  */
-#define NUM_FAILURE_ITEMS  (last_used_reg * NUM_REG_ITEMS + NUM_REG_ITEMS)
+#define NUM_FAILURE_ITEMS  (num_failure_counts * NUM_COUNT_ITEMS + last_used_reg * NUM_REG_ITEMS + NUM_REG_ITEMS)
 
+/* This pushes counter information for succeed_n and jump_n */
+#define PUSH_FAILURE_COUNT(ptr)						\
+  do {									\
+    int c;								\
+    EXTRACT_NUMBER(c, ptr);						\
+    ENSURE_FAIL_STACK(2);						\
+    *stackp++ = (unsigned char*)c;					\
+    *stackp++ = (ptr);							\
+    num_failure_counts++;						\
+  } while (0)
 
+#define POP_FAILURE_COUNT()						\
+  do {									\
+    unsigned char *ptr = *--stackp;					\
+    int count = (long)*--stackp;					\
+    STORE_NUMBER(ptr, count);						\
+  } while (0)
+
 /* This pushes most of the information about the current state we will want
@@ -3356,15 +3392,6 @@
 									\
-    if (stacke - stackp <= NUM_FAILURE_ITEMS) {				\
-	unsigned char **stackx;						\
-	unsigned int len = stacke - stackb;				\
-	/* if (len > re_max_failures * MAX_NUM_FAILURE_ITEMS)		\
-	   {								\
-	   FREE_VARIABLES();						\
-	   FREE_AND_RETURN(stackb,(-2));				\
-	   }*/								\
+    ENSURE_FAIL_STACK(NUM_FAILURE_ITEMS);				\
+    *stackp++ = (unsigned char*)num_failure_counts;			\
+    num_failure_counts = 0;						\
 									\
-        /* Roughly double the size of the stack.  */			\
-        EXPAND_FAIL_STACK(stackx, stackb, len);				\
-      }									\
-									\
     /* Now push the info for each of those registers.  */		\
@@ -3386,3 +3413,3 @@
 
-     /* This pops what PUSH_FAILURE_POINT pushes.  */
+/* This pops what PUSH_FAILURE_POINT pushes.  */
 
@@ -3395,2 +3422,7 @@
     stackp -= temp; 		/* Remove the register info.  */	\
+    temp = (long)*--stackp;	/* How many counters pushed.  */	\
+    while (temp--) {							\
+      POP_FAILURE_COUNT();      /* Remove the counter info.  */		\
+    }									\
+    num_failure_counts = 0;	/* Reset num_failure_counts.  */	\
   } while(0)
@@ -3542,2 +3574,4 @@
 
+  int num_failure_counts = 0;
+
   if (regs) {
@@ -3903,3 +3937,3 @@
 	   would have to backtrack because of (as in, e.g., `a*a')
-	   then we can change to pop_failure_jump, because we'll
+	   then we can change to finalize_jump, because we'll
 	   never have to backtrack.
@@ -4027,5 +4061,6 @@
 	/* Originally, this is how many times we HAVE to succeed.  */
-	if (mcnt > 0) {
+	if (mcnt != 0) {
 	  mcnt--;
 	  p += 2;
+	  PUSH_FAILURE_COUNT(p);
 	  STORE_NUMBER_AND_INCR(p, mcnt);
@@ -4033,5 +4068,3 @@
 	}
-	else if (mcnt == 0) {
-	  p[2] = unused;
-	  p[3] = unused;
+	else  {
 	  goto on_failure;
@@ -4045,2 +4078,3 @@
 	  mcnt--;
+	  PUSH_FAILURE_COUNT(p + 2);
 	  STORE_NUMBER(p + 2, mcnt);
@@ -4261,2 +4295,6 @@
 	regstart[this_reg] = *--stackp;
+      }
+      mcnt = (long)*--stackp;
+      while (mcnt--) {
+	POP_FAILURE_COUNT();
       }

In This Thread