Недавно мы написали статью Ради интереса: команда PVS-Studio придумала, как контролировать качество некоторых проектов с открытым исходным кодом. Теперь пришло время написать о найденных ошибках. Я не буду писать обо всех недостатках, которые замечаю, а только о тех, которые интересны. Моя цель — продвигать методологию статического анализа, а не описывать как можно больше предупреждений.

То, что мы имеем сегодня, — это простая типичная ошибка о бессмысленной проверке кода. PVS-Studio сообщает об этом так: V547: Выражение sad == NULL всегда ложно. screen_ops.c 1339.

static int area_dupli_invoke(
  bContext *C, wmOperator *op, const wmEvent *event)
{
  ScrArea *area = CTX_wm_area(C);
  if (event && event->customdata) {
    sActionzoneData *sad = event->customdata;
    if (sad == NULL) {
      return OPERATOR_PASS_THROUGH;
    }
    area = sad->sa1;
  }
  ....
}

Вложенное условие другого условия никогда не выполняется, так как этот указатель уже был проверен ранее. В результате функция никогда не вернет статус OPERATOR_PASS_THROUGH. Мне сложно сказать, насколько критичен этот баг. Впрочем, если авторы хотели вернуть этот статус, вряд ли они хотели, чтобы это был мертвый код :).