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 可能会错误地解析比较表达式。尝试添加一些空格或括号来帮助,原文:

i<db->nDb

修改的:

i < db->nDb

这只是我的猜测。

于 2011-06-06T21:16:43.060 回答
1

看起来像是误报,但是我无法使用 Cppcheck 1.48 和 SQLite 3.7.6.3 的 C 源代码重现它。

如果您使用不同的源或不同的版本,请将其记录为错误

于 2011-06-06T23:50:41.063 回答