|
sylpheed-jp:1182
From: Hiroyuki Yamamoto <yamamoto@xxxxxxxxxx> 山本です。 On Mon, 19 Nov 2001 13:02:50 +0900 Shimamoto "Neko" Tatsuya <neko@xxxxxxxxxx> wrote: > ちょっと試してみたところ、textview.cのget_email_part()内、 > isalnum()に0xc0を渡した時にもTRUEが返されていました。 > > 簡単なテストプログラムを別に書いてみたら > isalnum( 0xc0 )はFALSEを返してましたので、 > どうしてこれがTRUEになってしまうのかは全くの謎。 むむ。 > とりあえず、このようにして↓、現象は回避されましたが、 > (0.6.5のtextview.cです)なんだかなぁ。 > 旧: > 513 /* TODO: really should terminate with an alnum? */ > 514 for (; ep_ > scanpos && !isalnum(*ep_); --ep_) > 515 ; > 新: > 513 /* TODO: really should terminate with an alnum? */ > 514 for (; ep_ > scanpos && !(isalnum(*ep_)&&isascii(*ep_)); --ep_) > 515 ; これを、 > 514 for (; ep_ > scanpos && !(isalpha(*ep_) || isdigit(*ep_)) && ; --ep_) あるいは、 > 514 for (; ep_ > scanpos && !(isupper(*ep_) || islower(*ep_) || isdigit(*ep_)) && ; --ep_) とするとどうなるでしょうか? > LOCALEが関係していたりするんでしょうか? > 私のところではsylpheedを立ち上げると > Gdk-WARNING **: can not set locale modifiers > なるメッセージが出るんですが… isalpha() は ア ル ファ ベットかどうか調べる。これは標準の"C" localeでは (isupper(c) || islower(c)). と等し い。 他 のlocaleでは、大文字でも小文字でもない他の文字で も isalpha() がtrueを返すことがある。 とあるので、どうも怪しげですね。 ISO8859-1では 0xc0 == '`' 付の 'A' なので、これがアルファベット と認識されているのかもしれません。 どうも isascii() を使った方が安全な気がしますね(^^; -- Hiroyuki Yamamoto <yamamoto@xxxxxxxxxx> http://www.good-day.co.jp/ (Good-Day) http://www.good-day.net/ (Good-Day.NET) http://sylpheed.good-day.net/ (Sylpheed) 1172 2001-11-16 12:52 [t-kitano@xxxxxxxxxx ] 特定の条件で文字が表示されない 1173 2001-11-16 13:58 ┗[neko@xxxxxxxxxx ] 1174 2001-11-16 14:20 ┗[yamamoto@xxxxxxxxxx ] 1175 2001-11-16 14:29 ┣[neko@xxxxxxxxxx ] 1176 2001-11-16 21:35 ┣[t-kitano@xxxxxxxxxx ] 1181 2001-11-19 13:02 ┗[neko@xxxxxxxxxx ] -> 1182 2001-11-19 13:22 ┗[yamamoto@xxxxxxxxxx ] 1183 2001-11-19 13:49 ┗[neko@xxxxxxxxxx ] 1184 2001-11-19 17:04 ┗[yamamoto@xxxxxxxxxx ] |