Clang scan-build: левый операнд '==' является значением мусора - PullRequest
0 голосов
/ 11 января 2020

Я скомпилировал программу с scan-build make

int FanotifyPolling::writeResponse(const struct fanotify_response response,
                               int doBuffer) {
int ret = 0;
struct stat statbuf;

pthread_mutex_lock(&mutex_response);

if (doBuffer) {
//
// 23 Taking false branch   
//
    // Add file to scan buffer.
    ret = fstat(response.fd, &statbuf);
    if (ret != -1) {
        e->getScanCache()->add(&statbuf, response.response);
    }
}

if (response.response == FAN_DENY && response.fd >= FAN_NOFD) {
//
// 24   The left operand of '==' is a garbage value
//

Комментарии 23 и 24 взяты из сгенерированного результата анализа кода stati c.

Почему Кланг считает, что ответ .response является значением мусора, если doBuffer имеет значение false? Значение response.response предоставляется вызывающей стороной и не может зависеть от doBuffer.

...