[前][次][番号順一覧][スレッド一覧]

mysql:869

From: 民斗 <民斗 <tommy@xxxxxxxxxx>>
Date: Fri, 14 May 1999 11:37:29 +0900
Subject: [mysql 00869] Re: VineLinux の egcs でコンパイル

民斗です。

[Subject: [mysql 00868] Re: VineLinux のegcs でコンパイル]
[Date: Fri, 14 May 1999 10:54:24 +0900  From:民斗]

> たしかにコンパイラのバグ(のよう)なので、「コンパイラを変えれば良い」
> だけでもいいんですけど、現在もっとも使われていると思われるコンパイラ
> の gcc-2.8.x や egcs で問題が発生してるので、この問題を回避するための
> パッチでも作った方がいいかな…という気もしてます。
> 
> SJIS だけじゃなくて EUC の場合でも同様ですし。EUC は '\' を含んでない
> ので問題が表面化してないだけで…。

色々試してたら "(uchar)(c)" を "((c)&0xff)" に変更するだけで、回避
できたようなので、パッチを作りました。

mysql-3.22.22 に対するパッチです。まだ試してませんが、多分大丈夫でしょう。

原因はあくまでもコンパイラのバグ(多分)なので、本家にこのパッチを取り込ん
でもらうつもりはありません。

私の Web ページに置いておこうと思います。もしよろしければ SoftAgency さん
の Web にも置いてください。

--
民斗 <tommy@xxxxxxxxxx>


*** include/m_ctype.h.in.orig	Sat Feb 27 19:40:09 1999
--- include/m_ctype.h.in	Fri May 14 11:11:07 1999
***************
*** 102,107 ****
  #define	USE_MB_IDENT
! #define isujis(c)	((0xa1<=(uchar)(c) && (uchar)(c)<=0xfe))
! #define iskata(c)	((0xa1<=(uchar)(c) && (uchar)(c)<=0xdf))
! #define isujis_ss2(c)	((unsigned char)(c) == 0x8e)
! #define isujis_ss3(c)	((unsigned char)(c) == 0x8f)
  #define ismbchar(p, end)	((*(uchar*)(p)<0x80)? 0:\
--- 102,107 ----
  #define	USE_MB_IDENT
! #define isujis(c)	((0xa1<=((c)&0xff) && ((c)&0xff)<=0xfe))
! #define iskata(c)	((0xa1<=((c)&0xff) && ((c)&0xff)<=0xdf))
! #define isujis_ss2(c)	(((c)&0xff) == 0x8e)
! #define isujis_ss3(c)	(((c)&0xff) == 0x8f)
  #define ismbchar(p, end)	((*(uchar*)(p)<0x80)? 0:\
***************
*** 120,123 ****
  #define USE_MB_IDENT
! #define issjishead(c)	((0x81<=(uchar)(c) && (uchar)(c)<=0x9f) || (0xe0<=(uchar)(c) && (uchar)(c)<=0xfc))
! #define issjistail(c)	((0x40<=(uchar)(c) && (uchar)(c)<=0x7e) || (0x80<=(uchar)(c) && (uchar)(c)<=0xfc))
  #define ismbchar(p, end)	(issjishead(*(p)) && (end)-(p)>1 && issjistail(*((p)+1))? 2: 0)
--- 120,123 ----
  #define USE_MB_IDENT
! #define issjishead(c)	((0x81<=((c)&0xff) && ((c)&0xff)<=0x9f) || (0xe0<=((c)&0xff) && ((c)&0xff)<=0xfc))
! #define issjistail(c)	((0x40<=((c)&0xff) && ((c)&0xff)<=0x7e) || (0x80<=((c)&0xff) && ((c)&0xff)<=0xfc))
  #define ismbchar(p, end)	(issjishead(*(p)) && (end)-(p)>1 && issjistail(*((p)+1))? 2: 0)

[前][次][番号順一覧][スレッド一覧]

       866 1999-05-14 00:52 [Hiroshi Marui <bant@] VineLinux の egcs でコンパイル          
       867 1999-05-14 10:10 ┗[<takeshi@xxxxxxxxxx>]                                       
       868 1999-05-14 10:54  ┣[民斗 <tommy@xxxxxxxx]                                     
->     869 1999-05-14 11:37  ┃┣[民斗 <tommy@xxxxxxxx]                                   
       871 1999-05-14 11:47  ┃┃┗[<takeshi@xxxxxxxxxx>]                                 
       870 1999-05-14 11:39  ┃┗[<takeshi@xxxxxxxxxx>]                                   
       872 1999-05-14 12:11  ┃ ┗[民斗 <tommy@xxxxxxxx]                                 
       873 1999-05-14 12:23  ┃  ┗[<takeshi@xxxxxxxxxx>]                               
       875 1999-05-14 14:49  ┃   ┗[民斗 <tommy@xxxxxxxx]                             
       883 1999-05-14 23:43  ┗[Hiroshi Marui <bant@]