1

cppcheckは、次のステートメントがsqlite3.cで構文エラーを生成すると判断しました。

for(i=0; i<db->nDb; i++){

全機能:

SQLITE_PRIVATE void sqlite3BtreeLeaveAll(sqlite3 *db){
  int i;
  Btree *p;
  assert( sqlite3_mutex_held(db->mutex) );
  for(i=0; i<db->nDb; i++){
    p = db->aDb[i].pBt;
    if( p && p->sharable ){
      assert( p->wantToLock>0 );
      p->wantToLock--;
      if( p->wantToLock==0 ){
        unlockBtreeMutex(p);
      }
    }
  }
 }

構文エラーかわかりません。説明してください。これは誤検知ですか?

4

2 に答える 2

1

誤検知のように見えますが、Cppcheck 1.48 と SQLite 3.7.6.3 の C ソース コードを使用しても再現できません。

別のソースまたは別のバージョンを使用している場合は、バグとして記録してください。

于 2011-06-06T23:50:41.063 に答える
1

CppCheck が比較式を正しく解析していない可能性があります。スペースや括弧を追加してみてください。オリジナル:

i<db->nDb

変更:

i < db->nDb

これは私の推測です。

于 2011-06-06T21:16:43.060 に答える