mysql:396
From: 民斗 <民斗 <tommy@xxxxxxxxxx>>
Date: Sun, 22 Nov 1998 00:59:04 +0900
Subject: [mysql 396] MySQL SJIS Bug (Re: MS-ACCESS から MySQL を使う )
[Subject: [mysql 388] Re: MS-ACCESS から MySQL を使う] [Date: Fri, 20 Nov 1998 13:58:35 +0900 From:民斗] > ちょっと過去のメールを読み返してみたら、[mysql 187] で tamon さんが > http://www.alles.or.jp/~tamon/myodbc.zip > に ShiftJIS 対応の MyODBC を置いたというのがありましたね。 というわけで、MyODBC の SJIS 対応は行なう必要がなくなったので、 MyODBC 内部で SJIS←→EUC 対応ができないかな〜と思って、ソースを 読んでみたんですが、あちこちいじらないといけなくて結構面倒なような のであきらめました。 まあそれはおいといて、その作業中に MySQL 本体の SJIS 対応のバグを 見つけてしまいました。あるバイトが SJIS の1バイト目に適合すると、 次のバイトがなんであれ SJIS と判断してしまいます。 実際には問題になることはほとんどないと思いますが、まあ縁起物なので パッチをつけておきます。 ついでに EUC のマクロも少しいじって安全にしました。これもやはり 縁起物という程度です。 -- 民斗 <tommy@xxxxxxxxxx> --- include/m_ctype.h.in.orig Sat Oct 17 18:38:12 1998 +++ include/m_ctype.h.in Sun Nov 22 00:41:15 1998 @@ -105,5 +105,5 @@ #define ismbchar(p, end) ((*(uchar*)(p)<0x80)? 0:\ - isujis(*(p)) && end-(p)>1 && isujis(*((p)+1))? 2:\ - isujis_ss2(*(p)) && end-(p)>1 && iskata(*((p)+1))? 2:\ - isujis_ss3(*(p)) && end-(p)>2 && isujis(*((p)+1)) && isujis(*((p)+2))? 3:\ + isujis(*(p)) && (end)-(p)>1 && isujis(*((p)+1))? 2:\ + isujis_ss2(*(p)) && (end)-(p)>1 && iskata(*((p)+1))? 2:\ + isujis_ss3(*(p)) && (end)-(p)>2 && isujis(*((p)+1)) && isujis(*((p)+2))? 3:\ 0) @@ -120,3 +120,3 @@ #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))? 2: 0) +#define ismbchar(p, end) (issjishead(*(p)) && (end)-(p)>1 && issjistail(*((p)+1))? 2: 0) #define ismbhead(c) issjishead(c)
383 1998-11-20 05:17 [民斗 <tommy@xxxxxxxx] MS-ACCESS から MySQL を使う 384 1998-11-20 06:19 ┗[民斗 <tommy@xxxxxxxx] 386 1998-11-20 13:32 ┣[Seiji tateyama <tate] 388 1998-11-20 13:58 ┗[民斗 <tommy@xxxxxxxx] 394 1998-11-21 10:48 ┣[<takeshi@xxxxxxxxxx>] -> 396 1998-11-22 00:59 ┗[民斗 <tommy@xxxxxxxx] MySQL SJIS Bug (Re: MS-ACCESS から MySQL を使う )