08/06/08 21:04:18
>>46
dat.dbは0044bで正常に完了した物を使いました。
>>45 の省略した部分に原因があったので、かいつまんで書くと
o2onのDB再構築は読み込んだファイルからハッシュを生成して、
それをdat.dbに対してinsert or replace into~を使って更新をかけています。
o2onはDB再構築の前に delete from dat や truncate table dat を実行していません。
なので、キーとなるhashが一致しない限り、異常なレコードが生成されたときに消える機会が無くなります。
んで、問題のあったレコードは、datテーブルのhashに何か入っていて、
それ以外が空文字か0、lastupdateとlastpublishは1212450516付近の値。
そしてdat収集タブを開くときに、O2Boards::MakeBBSMenuXML()から呼ばれる
O2DatDB::select_datcount()で"ドメイン:掲示板名"のmapを返してくるのですが、
":"というドメイン名と掲示板名が空のものがかえってきます。そのためMakeBBSMenuXML()のなかの
for (nmit = nummap.begin(); nmit != nummap.end(); nmit++) {
wsplit(nmit->first.c_str(), L":", token);
xml += L"<board>"EOL;
xml_AddElement(xml, L"bbsname", NULL, token[1].c_str()); ← ここ
で存在しない添え字を参照して落ちてしまいます。