はじめまして塚田と申します。
最近 PHP の日本語対応の作業を手伝っているのですが、
そこでマルチバイト文字対応の正規表現ライブラリが欲しいと言うことで、
Ruby で使っているものを利用させていただこうということになりました。

移植作業を行っている際に気になった点がありますのでパッチを送ります。


--- regex.c	Fri Aug 13 14:45:14 1999
+++ mbregex.c	Mon Aug 23 00:00:54 1999
@@ -114,13 +120,13 @@
         (type*)memcpy(stackx, stackb, len * sizeof (type)))
 #else  /* NO_ALLOCA defined */
 
-#define RE_ALLOCATE xmalloc
+#define RE_ALLOCATE emalloc           <-ここは関係ありません
 
-#define FREE_VAR(var) if (var) free(var); var = NULL
+#define FREE_VAR(var) do { if (var) free(var); var = NULL; } while(0)
 #define FREE_VARIABLES()
 
-#define FREE_AND_RETURN_VOID(stackb)   free(stackb);return
-#define FREE_AND_RETURN(stackb,val)    free(stackb);return(val)
+#define FREE_AND_RETURN_VOID(stackb)   do { free(stackb); return; } while(0)
+#define FREE_AND_RETURN(stackb,val)    do { free(stackb); return(val); } while(0)
 #define DOUBLE_STACK(stackx,stackb,len,type) \
         (type*)xrealloc(stackb, 2 * len * sizeof(type))
 #endif /* NO_ALLOCA */
@@ -2590,7 +2673,7 @@
   register int j, k;
   unsigned is_a_succeed_n;
 
-  unsigned char **stackb = TMALLOC(NFAILURES, unsigned char*);
+  unsigned char **stackb = RE_TALLOC(NFAILURES, unsigned char*);
   unsigned char **stackp = stackb;
   unsigned char **stacke = stackb + NFAILURES;
   int options = bufp->options;


-- 
sender: Tsukada Takuya (塚田 卓也)
town: inaba hizume, Nagano City (長野市稲葉日詰)