[Senna-dev 708] Re: バグ報告 ( ソート周り )

Back to archive index

morit****@razil***** morit****@razil*****
2007年 10月 8日 (月) 12:47:30 JST


こんにちは。森です。

>>> 窪田 博昭 さんは書きました:
> こんにちは 窪田です。
> 
> バグ報告を3点程

ご指摘ありがとうございます!!
ドキュメントのバグを修正しました。

> -------------------------------------
> ・API解説で_sen_group_optargのコールバック関数定義がソー
> スと食い違っている
> ソース:
> int (*func)(sen_records *, const sen_recordh *, void *,
> void *);
> ドキュメント:
> int (*func)(sen_records *, const sen_recordh *, void **,
> void *);
> 第3引数が違います。void** => void* 

はい。ご指摘のとおりでした。。

> -------------------------------------
> ・_sen_sort_optargのコールバック関数定義がソースと食い違
> っている
> ソース:
> int (*compar)(sen_records *, const sen_recordh *,
> sen_records *, const sen_recordh *, void *);
> ドキュメント:
> int (*compar)(sen_records *, sen_recordh *, sen_recordh *,
> void *);
> 
> 引数の数、const修飾の有無等が違います。
> また、ソースを追った所、第1引数と第3引数(sen_records)は
> 同じモノが渡されている模様。(set.c:part_func辺り)

その通りです。これは、複数のrecordsのrecordをマージソートする時に
同じ比較関数を流用可能にするために引数を増やしました。

> -------------------------------------
> ・sen_records_sortの結果、キー値によってソートされてしま
>> API解説には以下の様にあるが、実際はKey値によってソートさ
> れている。(key_size=sizeof(int)で確認)
> 『comparにNULLが指定された場合は、各レコードのスコア値に
> よってソートします。』
> 
> 但し、sen_records_sort(??,??,NULL)の様に、optarg自体をNULL
> 渡しした場合はスコアによってソートされる様です。

その通りでした。comparとcompar_argが共にNULLの場合はkey値でソートされます。
optargがNULLの場合はスコアによって降順にソートされます。

> -------------------------------------
> よろしくお願いします。
> 
> --------------------------------------
> Easy + Joy + Powerful = Yahoo! Bookmarks x Toolbar
> http://pr.mail.yahoo.co.jp/toolbar/
> 
> _______________________________________________
> Senna-dev mailing list
> Senna****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/senna-dev
> 
--
morita




Senna-dev メーリングリストの案内
Back to archive index