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

sylpheed-jp:1182

From: Hiroyuki Yamamoto <yamamoto@xxxxxxxxxx>
Date: Mon, 19 Nov 2001 13:22:23 +0900
Subject: [sylpheed-jp:01182] Re: 特定の条件で文字が表示されない

山本です。

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 ]