Синтаксическая ошибка цикла for в Sqlite3.c - PullRequest
1 голос
/ 06 июня 2011

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);
      }
    }
  }
 }

Я не вижукак это синтаксическая ошибка.Пожалуйста, объясни.Это ложное срабатывание?

Ответы [ 2 ]

1 голос
/ 07 июня 2011

Выглядит как ложное срабатывание, однако я не могу воспроизвести его, используя Cppcheck 1.48 и исходный код C для SQLite 3.7.6.3.

Если вы используете другой исходный код или другую версию, пожалуйста, зарегистрируйте это как ошибку .

1 голос
/ 07 июня 2011

CppCheck может неправильно анализировать выражение сравнения. Попробуйте добавить несколько пробелов или скобок, чтобы помочь, Оригинал:

i<db->nDb

Изменен:

i < db->nDb

Это только мое предположение.

...