morit****@razil*****
morit****@razil*****
2009年 4月 27日 (月) 08:23:05 JST
森です。
ご指摘ありがとうございます!
encodingのところは僕も気になっていました。
ctx_initの方で解決するように統一したいと思います。
>>> Kouhei Sutou さんは書きました:
> 須藤です。
>
> grn_pat_create()ではencodingがGRN_ENC_DEFAULTのときは
> grn_gctx.encodingを使うので、ビルド時に指定したエンコーディ
> ングが使用されます。
>
> grn_pat_create():
> if (encoding == GRN_ENC_DEFAULT) { encoding = grn_gctx.encoding; }
>
> 一方、io_hash_init()ではctx->encodingを使います。
> ctx->encodingはgrn_gctx.encodingと違ってGRN_ENC_DEFAULTが指
> 定されている可能性があります。
>
> io_hash_init():
> if (encoding == GRN_ENC_DEFAULT) { encoding = ctx->encoding; }
>
> デフォルト値の解決のしかたが違うね、ということなのですが、こ
> れは意図されているものでしょうか?
>
>
> とりあえず、意図されているものとして話を進めるのですが、
> GRN_ENC_DEFAULTがstr.cとか下の層にそのまま渡ると問題がありそ
> うです。
>
> 例えば、GRN_ENC_DEFAULTのままgrn_charlen()に渡るとビルド時に
> 指定されたエンコーディングが使われません。
>
> grn_charlen():
> switch (encoding) {
> case GRN_ENC_EUC_JP :
> ...
> break;
> case GRN_ENC_UTF8 :
> ...
> break;
> case GRN_ENC_SJIS :
> ...
> break;
> default :
> return 1;
> break;
> }
>
> これは、例えば、grn_obj_get_accessor()の中で起こる可能性があ
> ります。
>
> こっちの動作は意図されているものでしょうか?
>
>
> ちなみに、個人的にはGRN_TABLE_PAT_KEYなどのレベルで
> GRN_ENC_DEFAULTを解決するよりも、grn_str_charlen()などの関数
> の方でGRN_ENC_DEFAULTならビルド時に指定したエンコーディングに
> する方が好みだったりします。GRN_ENC_DEFAULTかどうかを確認しな
> ければいけない関数が増えるかもしれませんが。。。
>
> とりあえず、grn_ctx_init()でGRN_ENC_DEFAULTを解決すると
> grn_charlen()などにGRN_ENC_DEFAULTが渡らなくなりそうな気がし
> ます。
>
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
>
--
morita