Coverity忽略return语句

时间:2018-05-18 10:55:44

标签: coverity

我怎样才能获得Coverity的条件!由于返回声明,不应再对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]

1 个答案:

答案 0 :(得分:0)

我不认为Coverity在抱怨pHost为空。我认为这只是告诉您在!pHost为假的情况下分析了其余功能。

Coverity似乎告诉您,在调用dockWindowConsoleMap.value()之后,指针pC将为null,因为该函数返回第二个参数(由于未提供,因此默认为null)。然后Coverity认为您正在使用pC作为setMiniConsoleFont的输入,它将取消对它的引用。

您可能想要查看dockWindowConsoleMap.value()的源,以了解其返回值与该可选第二个参数的关系,还请查看setMiniConsoleFont,以了解其如何取消对输入的引用。