2005-07-21
_ [開発] Berkeley DBのインタフェース間差異に気をつけろ
Perlインタフェース(BerkeleyDB)で作成したDBをCインタフェースで使う時には、key、valueの扱いに注意。Perlの文字列をkey、valueとしてputした場合、格納される文字列はnull terminatedには「ならない」。したがって、Cインタフェースで読むときには、keyにはnullを含めず、返ってきたvalueはサイズをチェックして余計に読まないようにしなくてはならない。逆にCインタフェースでnull込みで文字列をputして、Perlインタフェースで読むときにはkeyにnullを加え、返ってきた文字列はnull付きなのでchopする。filter_fetch_keyとかfilter_store_valueなどを使う手もある。どっちかで閉じていれば問題ないのだが...。
READMEと日記の書き方