# V577. Label is present inside switch(). Check for typos and consider using the 'default:' operator instead.

Анализатор обнаружил потенциальную ошибку внутри оператора switch. Используется метка с именем похожим на 'default'. Возможно это опечатка.

Рассмотрим пример:

    int c = 10;
    int r = 0;
    switch(c){
    case 1:
      r = 3; break;
    case 2:
      r = 7; break;
    defalt:
      r = 8; break;
    }

Кажется после того, как этот код отработает, значение переменной 'r' будет 8. Но на самом деле значение 'r' останется равно нулю. Дело в том, что "defalt" это метка, а не оператор "default". Исправленный вариант кода:

    int c = 10;
    int r = 0;
    switch(c){
    case 1:
      r = 3; break;
    case 2:
      r = 7; break;
    default:
      r = 8; break;
    }

Эта диагностика срабатывает также, когда имя метки начинается с "case". Есть вероятность, что пропущен пробел. Например, вместо метки "case1:", должно быть написано "case 1:".

Данная диагностика классифицируется как:

CWE-478 CERT-MSC01-C