Coverity 忽略 return 语句
Coverity ignoring return statement
我怎样才能让 Coverity 知道由于 return 语句,不应进一步评估条件 !pHost?
bool mudlet::setWindowFont(Host* pHost, const QString& window, const QString& font)
1359{
1. Condition !pHost, taking false branch.
1360 if (!pHost) {
1361 return false;
1362 }
1363
1364 QMap<QString, TConsole*>& dockWindowConsoleMap = mHostConsoleMap[pHost];
1365
2. Condition dockWindowConsoleMap->contains(window), taking true branch.
1366 if (dockWindowConsoleMap.contains(window)) {
3. assign_zero: Assigning: <temporary> = NULL.
4. identity_transfer: Passing TConsole * const(NULL) as argument 2 to member function value, which returns that argument.
5. alias_transfer: Assigning: pC = dockWindowConsoleMap->value(window, TConsole * const(NULL)).
1367 TConsole* pC = dockWindowConsoleMap.value(window);
CID 1468654 (#1 of 1): Explicit null dereferenced (FORWARD_NULL)6. var_deref_model: Passing null pointer pC to setMiniConsoleFont, which dereferences it. [show details]
我不认为 Coverity 是在抱怨 pHost 为空。我认为它只是告诉你它在 !pHost 为假的情况下分析了函数的其余部分。
Coverity 似乎在告诉您调用 dockWindowConsoleMap.value() 后指针 pC 将为空,因为该函数 return 是第二个参数(默认为空,因为您没有不提供)。然后 Coverity 认为您正在使用 pC 作为 setMiniConsoleFont 的输入,这将取消引用它。
您可能想查看 dockWindowConsoleMap.value() 的源代码以了解它的 return 值如何与可选的第二个参数相关,还可以查看 setMiniConsoleFont 以了解它如何取消引用其输入。
我怎样才能让 Coverity 知道由于 return 语句,不应进一步评估条件 !pHost?
bool mudlet::setWindowFont(Host* pHost, const QString& window, const QString& font)
1359{
1. Condition !pHost, taking false branch.
1360 if (!pHost) {
1361 return false;
1362 }
1363
1364 QMap<QString, TConsole*>& dockWindowConsoleMap = mHostConsoleMap[pHost];
1365
2. Condition dockWindowConsoleMap->contains(window), taking true branch.
1366 if (dockWindowConsoleMap.contains(window)) {
3. assign_zero: Assigning: <temporary> = NULL.
4. identity_transfer: Passing TConsole * const(NULL) as argument 2 to member function value, which returns that argument.
5. alias_transfer: Assigning: pC = dockWindowConsoleMap->value(window, TConsole * const(NULL)).
1367 TConsole* pC = dockWindowConsoleMap.value(window);
CID 1468654 (#1 of 1): Explicit null dereferenced (FORWARD_NULL)6. var_deref_model: Passing null pointer pC to setMiniConsoleFont, which dereferences it. [show details]
我不认为 Coverity 是在抱怨 pHost 为空。我认为它只是告诉你它在 !pHost 为假的情况下分析了函数的其余部分。
Coverity 似乎在告诉您调用 dockWindowConsoleMap.value() 后指针 pC 将为空,因为该函数 return 是第二个参数(默认为空,因为您没有不提供)。然后 Coverity 认为您正在使用 pC 作为 setMiniConsoleFont 的输入,这将取消引用它。
您可能想查看 dockWindowConsoleMap.value() 的源代码以了解它的 return 值如何与可选的第二个参数相关,还可以查看 setMiniConsoleFont 以了解它如何取消引用其输入。