Sqlite3.c 中的 For 循环语法错误
cppcheck 确定以下语句在 sqlite3.c 中产生语法错误:
for(i=0; 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);
}
}
}
}
我不明白它是怎么回事语法错误。请解释一下。这是误报吗?
cppcheck has determined that the following statement produces a syntax error in sqlite3.c:
for(i=0; i<db->nDb; i++){
Full function:
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);
}
}
}
}
I do not see how it is a syntax error. Please explain. Is this a false positive?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来像是误报,但是我无法使用 Cppcheck 1.48 和 SQLite 3.7.6.3 的 C 源代码重现它。
如果您使用不同的源或不同的版本,请将其记录为错误。
Looks like a false positive, however I can't reproduce it using Cppcheck 1.48 and C source code for SQLite 3.7.6.3.
If you're using different source or a different version, please log it as a bug.
CppCheck 可能错误地解析了比较表达式。
尝试添加一些空格或括号来帮助解决,
原文:
修改:
这只是我的猜测。
CppCheck may be parsing the comparison expression incorrectly.
Try adding some spaces or parenthesis to help out,
Original:
Modified:
This is just my guess.