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

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 を使う )